System and method for resource management

ABSTRACT

A system and method of resource management is described. Within a telecommunications network, resources are sources of assistance in performing functions needed to process calls. The present invention is a system-wide approach to resource management that provides controlled access to information about resources. A resource management routine is described that comprises electronic libraries residing in memory of a computer system that store information about resources and resource management application programmer interfaces that are used to access the stored information.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to managing resources in a telecommunications network or computer system environment.

2. Related Art

Telecommunications network products are services provided by telephone companies that are carried on telecommunications networks. A widely known example is dial-1 long distance voice service which allows a customer to dial a 1 plus a ten digit number from his or her home telephone, talk to a party who answers the telephone on the line of the ten digit number dialed, and pay for the telephone call when billed at the end of the month.

Although dial-1 is popular, other calling and payment options, also referred to as enhanced services, are sometimes preferable. For example, debit calling allows an individual to make a call from a phone other than their home phone and charge the call to the debit account. With debit calling, also referred to as prepaid calling, a customer puts finds in an account and has those funds debited each time a telephone call is made. Another calling and payment option is collect calling in which the call is billed to the receiving party's account.

Enhanced services are not limited to other calling and payment options. Enhanced services can provide a customer with information such as access to news and weather. Another enhanced service is 1-800-MUSICNOW which gives a telephone caller the ability to select and listen to music and then order a recording of the music by entering selections in response to menu prompts using the keypad of the telephone.

Enhanced services are possible because intelligent services networks (ISNs) within telephone companies telecommunications networks have advanced capabilities needed to process the enhanced service calls. The ISNs are networks that comprise ISN components capable of performing enhanced service call processing functions. Exemplary ISN components include computer systems that store data and perform protocol conversion and exchanges, also referred to as switches that route calls. In addition, for processing enhanced service calls, information about customers, calls, and telecommunications services is needed.

The information and ISN components are resources. Within a telecommunications network, resources are sources of assistance in performing functions needed to process calls.

For example, information such as the destination number dialed by a caller provides assistance in call processing by providing the area code which can be translated to determine what telecommunications network circuits should be used by ISN components to route the call to the intended recipient.

Information about resources may be obtained in multiple ways. For example, reports may be available that provide printed information about the resources. In addition, information may be available on-line by a human operator entering commands. Also, alarms may be generated that alert a human system overseer that a particular resource or group of resources is unavailable, malfunctioning, and/or in use more often than recommended. In typical ISNs, information is stored in an automated call distributor (ACD), an intelligent service network application processor (ISNAP), and other ISN components. The ACD provides the call switching, queuing, and protocol conversion functions. The intelligent service network applications processor (ISNAP) provides group selection functionality for the ISN.

Information about the resources is typically stored in electronic format in one or more computer systems. Application programmer interfaces (APIs) may be used to communicate call processing information and information about telecommunications components within a computer program. The APIs are procedures for communication within a computer program that reside in main memory and are processed by a processor. The APIs are used by programmable switches, such as the Excel programmable switch, to perform call processing functions. The API used by the Excel programmable switch is described in a document entitled, “Excel API specification revision 5.0.” Additional APIs include the Tabman, Queman, Sysmem, and Shmman APIs that are described in more detail below.

Typically, information about resources is handled in a non-standard, de-centralized manner. Information about various components within a telecommunications network is accessible via the particular component. For example, central processing unit (CPU) availability of a switch is obtained from the switch. Information about the processing capability of computer systems that assist the switch is stored in memory of the computer systems. In addition, information is only accessible using commands or APIs that can be understood by the component storing the information. For example, to access information about the switch, commands that can be understood by the switch must be used to obtain the data about the switch that is stored within the switch. To access information about a computer system assisting the switch, commands understood by the assisting computer system must be used.

SUMMARY OF THE INVENTION

The present invention is a system and method for managing resources, more particularly ISN resources. Resource management is performed by a resource management routine within an application program that resides in the memory of a switch controller. The resource management routine manages internal switch controller resources and external resources such as programmable switches.

An ISN includes components which perform enhanced call handling functions, such as operator consoles and automated response units, and components that provide access to databases and other networks. Enhanced services, such as pre-paid service, calling card, operator service, 1-800-COLLECT, and 1-800-MUSIC-NOW are possible using the ISN. A switch controller is a telecommunications network component which controls the operation of one or more programmable switches and is capable of performing complex call processing to handle service specific features of enhanced telecommunications services. The switch controller provides an interface between the public switching telephone network (PSTN) and the intelligent service network (ISN).

The present invention is a system-wide approach to resource management. The resource management routine provides standard procedures used by processes to obtain information about resources. In addition, the resource management routine provides controlled access to information about resources. The resource management routine is essentially a protective layer for information about resources. Compared to a library housing books which are resources for people to gain information, the resource management routine is a librarian which controls in a standardized way how resources are accessed by various different processes.

The resource management routine comprises electronic libraries residing in memory of the switch controller that store information about resources and resource management application programmer interfaces (APIs) that are used to access the stored information. Resource management APIs are stored in the main memory and processed by the processor of a computer. In order to process the resource management API, the processor calls the resource management API procedure from main memory. The resource management API procedure executes commands using input data. Completion of the execution of the resource management API results in return data which is the data requested and/or data indicating whether the transaction was successful and an output which is an action requested by the initiating routine.

Resource management APIs are generic in that they are not affected by changes to other APIs or messaging techniques, such as APIs for internal switch controller processing, the Excel programmable switch APIs, or changes to ISN protocols. Having a generic resource management API provides various benefits, including flexibility and extensibility. Flexibility is possible because the resource management APIs are independent of the other messaging techniques. Therefore, resource management does not need to be upgraded with changes to other routines and computer systems. In addition, if a new resource is added, the resource management routine needs to be updated but the new resource has a minimal impact on other routines and computer systems. As a result, changes can be more readily made to the ISN.

In addition, extensibility is improved with generic resource management APIs because new services can be more easily implemented. New services can be more easily implemented because modifications are not needed to the resource management routine unless implementation of the new service involves adding a new resource or modifying a resource such that access to data about that resource is affected. If a new resource is added or an existing resource is modified, changes are needed to the APIs associated with that resource and are not needed system wide.

Furthermore, maintenance and debugging of resource management routines within the switch controller are simplified and more accurate. Maintenance and debugging are simplified and more accurate because resource management APIs are standardized for the various resources. In other words, resource management APIs follow similar procedures when possible although the information is being accessed about different resources. As a result, resolution of maintenance and debugging issues for one resource management API is applicable to other resource management APIs. Also, resource management APIs are grouped within the same resource management routine. Therefore, maintenance and debugging resource management code involves accessing one routine and not attempting to identify resource management functionality within various processes and routines. Furthermore, individual routines are not required to have unique procedures and code for accessing information about resources. In addition to providing standard procedures, the generic resource management routine, which is available to routines requiring information about resources, reduces the overall code required to access resources.

Further features and advantages of the invention, as well as the structure and operation of various embodiments of the invention, are described in detail below with reference to the accompanying drawings.

BRIEF DESCRIPTION OF THE FIGURES AND TABLES

The present invention is described with reference to the accompanying drawings wherein:

FIG. 1 is a block diagram of an exemplary embodiment of a resource management environment according to one embodiment of the present invention;

FIG. 2 is a block diagram of the hardware configuration of a switch controller according to one embodiment of the present invention;

FIG. 3 is a flowchart of a resource management environment according to one embodiment of the present invention;

FIG. 4 is a block diagram of a resource management interface according to one embodiment of the present invention;

FIG. 5 illustrates the operation of a resource management process flow according to one embodiment of the present invention;

FIG. 6 is a diagram of an exemplary embodiment of resource management according to one embodiment of the present invention; and

Tables 1-69 illustrate application programmer interfaces and data structures according to one embodiment of the present invention.

In the drawings like reference numbers generally indicate identical functionally similar and/or structurally similar components. The drawing in which an element first appears is indicated by the left most digits in the corresponding reference number.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

1.0 Overview

Resource management within a switch controller provides management of intelligent service network (ISN) resources. A resource management routine within an application program residing in the memory of the switch controller manages resources by providing a protective layer of standard procedures, referred to as resource management application programmer interfaces (APIs) that are used to access information about ISN resources. The information about the ISN resources is stored electronically in memory and is organized in table format. The electronically stored data is referred to as the resource manager tables.

The ISN resources are resources associated with an ISN. An ISN is a network of components that perform functions to provide enhanced services, such as pre-paid service, calling card, operator service, 1-800-COLLECT, and 1-800-MUSIC-NOW. The ISN resources are sources of assistance in performing functions to provide enhanced services. The ISN components, such as operator consoles and automated response units, provide capabilities needed to process enhanced service calls and are ISN resources. In addition, information related to call processing is also an ISN resource.

The resource management routine resides within the memory of a switch controller. A switch controller is a telecommunications network component which provides an interface between the public switching telephone network (PSTN) and an intelligent service network (ISN). The switch controller provides control over ISN components, including one or more programmable switches, manual operator consoles, and automated response units (ARUs). In addition, the switch controller is capable of performing complex call processing to handle service specific features of enhanced telecommunications services.

The resource management routine comprises electronic libraries referred to as resource manager tables residing in memory of the switch controller that store information about resources and resource management application programmer interfaces (APIs) that are used to access the stored information. Resource management APIs are stored in the main memory and processed by the processor of a computer. In order to process the resource management API, the processor calls the resource management API procedure from main memory. The resource management API procedure executes commands using input data. The resource management API returns a response message that includes requested information and/or indication of whether the transaction was successful. The resource management API also results in an action requested by the initiating routine.

2.0 Example Resource Management Environment

FIG. 1 is a block diagram of an exemplary embodiment of a resource management environment 102 according to one embodiment of the present invention. The switch controller 112 within the ISN 126 provides access for a call initiated via telecommunications switching network 108 to ISN components 122 a, 122 b, . . . 122 n also within ISN 126. Except as otherwise noted, when the ISN components 122 are referred to generally, they will be referred to by number designation only and not a letter designation. The resource management routine which resides in memory of the switch controller 112 provides management of ISN 126 resources. The ISN 126 is described in further detail in copending U.S. Patent Application Ser. No. 09/096,936 entitled, “Intelligent Service Network,” incorporated by reference herein in its entirety.

The ISN environment 102 includes telephone 104 used by a caller, a telecommunications switching network 108, and an ISN 126. The telephone 104 used by the caller is connected to telecommunications switching network 108. The telecommunications switching network 108 provides switching and connectivity to the ISN 126. The ISN components 122 provide enhanced service call processing and connectivity to external networks and resources. Enhanced services include manual operator service, prepaid calling, calling card, 1-800-COLLECT, and 1-800-MUSICNOW. External networks and resources include financial processors, information databases, and Internet facilities.

The ISN 126 includes a programmable switch 110, a switch controller 112, LANs, WANs, and routers 120, and ISN components 122. The programmable switch 110 is connected to the telecommunications switching network 108 to provide switching capabilities for access to the ISN 126. The switch controller 112 is interconnected to programmable switch 110 to provide commands to control the programmable switch 110. The LANs, WANs, and routers 120 are connected to switch controller 112 and the ISN components 122 to provide connectivity between the switch controller 112 and the ISN components 122. Exemplary ISN components 122 include manual operator consoles (MOCs), automated response units (ARUs), databases, and protocol converters. The MOCs and ARUs are personal computers (PCS) that interact with a caller to provide operator services, customer services, and other enhanced services. Databases contain stored information and may be a single database or multiple databases connected to and controlled by a server systems. Protocol converters are connected to external networks and resources and provide protocol conversion and other processing necessary for interface between the telecommunications switching network 108 and external networks and resources.

The exemplary embodiment of a resource management environment 102 can best be described referencing the processing of a typical call. The exemplary call will be for a service that requires human operator intervention. The call is placed by a caller using telephone 104. The call is received by telecommunications switching network 108. The telecommunications switching network 108 comprises multiple telecommunications networks including local exchange networks and interexchange networks. A local exchange network comprises switches and termination equipment within a localized area An example of a local exchange network is a local telephone operating company network, such as Bell Atlantic. An interexchange network comprises a plurality of switches, also referred to as exchanges, distributed throughout a geographic area large enough to process long distance telephone calls. For example, a national interexchange network comprises switches located throughout the nation. When the call is routed to either a local exchange network or an interexchange network, the call is routed to one or more switches within the network.

The telecommunications switching network 108 is interconnected to the programmable switch 110 within the ISN 126. The programmable switch 110 has a basic switching matrix that provides switching functionality for access to the ISN 126. An ISN 126 may include additional programmable switches (not shown) interconnected to switch controller 112 or to additional switch controllers (not shown). The programmable switch is a dumb switch that can connect ports and process calls based on external commands. Examples of programmable switches include those built by Excel and Summa Four. Excel programmable switches come in sizes ranging from 512 ports to 8,000 ports.

The ISN 126 has a sizable architecture because the number of programmable switches 110 and the configuration of the programmable switches 110 can vary depending on the desired port requirement of the ISN 126. Excel programmable switches can support various signaling systems such as Signaling System Number 7(SS7) and can be connected directly to the signaling network of a telecommunications switching network 108. If multiple programmable switches are interconnected to one or more switch controllers, connections between the programmable switches and the switch controllers are most likely via a LAN (not shown), such as an Ethernet LAN, using transmission control protocol/internet protocol (TCP/IP). Transmission control protocol/internet protocol is used by various data networks including many Internet servers. Each programmable switch 110 is connected to the telecommunications switching network 108 via voice telephony trunks, also referred to as lines. Typical telephony trunks are capable of carrying high speed digital data. The voice trunk connectivity between the programmable switch 110 and the telecommunications switching network 108 includes signaling, such as SS7 protocol. The current industry standard of SS7 protocol is published in the International Telecommunications Union (ITU) Signaling System Number 7(SS7) Integrated Services Digital Network (ISDN) User Part (ISUP) NCT1.113(1995) document and the International Telecommunications Union (ITU) Signaling System 7(SS7) Message Transfer Part (MTP) NCT 1.111(1992) document which are incorporated herein by reference in their entirety. Signaling System 7 may be implemented using SS7 signaling rings (not shown) connected to a signal transfer point (not shown). Some ISN 126 architectures may use signaling gateways between the signaling transfer point and the programmable switch although this is not necessary if the programmable switch is capable of the signaling used by the telecommunications switching network 108.

Switch controller 112 is connected to programmable switch 110 to provide external commands to control call processing. The switch controller 112 provides the commands to the programmable switch 110 to perform call processing functions. When the programmable switch 110 receives a call from the network it sends a message to the switch controller 112. The switch controller 112 determines the call processing needed and returns commands to the programmable switch 110.

In addition, the switch controller 112 provides access to ISN components 122. The switch controller interfaces with ISN components 122 via LANs. WANs, routers (or any other connectivity) 114 using Network Information Distribution System (NIDS) Sequenced Packet Protocol (NSPP) on top of User Datagram Protocol/Internet Protocol (UDP/IP). Network Information Distribution System Sequenced Packet Protocol is a session oriented packet exchange protocol that is implemented over UDP/IP. It is designed to allow rapid information exchange between client applications and NIDS server processes. The use of TCP/IP between switch controller 112 and the programmable switch 110 and the use of NSPP/UDP/IP for communications via LANs, WANs, routers (or any other connectivity) 114 illustrate exemplary protocols but the ISN 126 is not limited to these protocols.

Stored within memory of the switch controller 112 is the switch controller application program 118 which is the computer program that performs the functionality associated with switch controller 112. The switch controller application program 118 is processed by a processor. The architecture of the switch controller 112 will be described in further detail with respect to FIG. 2.

The resource management routine 114 resides in memory of the switch controller 112 within the switch controller application program 118. In one embodiment of the present invention, the resource management routine is within a resource control function. The resource control function is a process within the switch controller application program 118 that both provides management of resources and monitors resources. Resources are managed by the resource management routine 114. Monitoring is performed by a system control process, also within the resource control process. The system control process monitors call states and service related resources.

Switch controller application program routines 116A, 116B, 116C, . . . 116 n reside in memory of the switch controller 112 within the switch controller application program 118 and, when executed, perform enhanced service call processing and other functions needed to provide an interface between the telecommunications switching network 108 and the ISN components 122. Except as otherwise noted, when the switch controller application program routines 116 are referred to generally, they will be referred to with the number designation only and not a letter designation. The routines within the switch controller application program 118 include the resource control function (described above), the programmable switch support function, the call control function, the service control function, and the management interface function.

The programmable switch support function provides an interface between the switch controller 112 and the programmable switch 110. The programmable switch support function translates messages between a generic switch controller API message format and programmable switch API message format, manages message header/trailer requirements, and controls connectivity to the programmable switch 110.

The call control function provides service independent call processing. The call control function performs call processing by analyzing call processing information with respect to the current state as defined by the basic call state machine model. Each call has two states represented in the state machine for the originating and terminating call segments. The basic call state machine model is described further in the International Telecommunications Union (ITU) specifications Q.1224. The call control function performs various functions including but not limited to: detecting an incoming call, creating an originating call model, collecting originating dial digits, requesting analysis of the digits, selecting trunk groups, creating a terminating call model, composing and sending messages to the terminating agent or party, detecting ISUP messages, detecting disconnect signals, and triggering enhanced services.

The call control function trigger features and services from the service control function. The service control function provides an interface to the ISN 126 and one or more service logic programs that provide enhanced service call processing. The service control function is made up of the switch service process, the group select process, call queuing process, and the prepaid service logic process. In order to provide an interface to the ISN 126, the switch service process connects between SCAPI used by the switch controller and NSPP used by ISN 126.

The management interface function includes two functional areas of monitoring control. The system monitoring functionality encompasses the generation of system alarms which allows a system management console to monitor the status and run-time operation of the switch controller software. The management interface function also includes the process manager, which is responsible for initial startup and health of individual processes which make up the switch controller 112.

The ISN components 122A, 122B, . . . 122 n (122) include components that provide enhanced service functionality call and connectivity to external networks and resources. Except as otherwise noted, when the ISN components 122 are referred to generally, they will be referred to with the number designation only and not a letter designation. One example of an ISN component 122 is the MOC. The MOC is PC workstation that is operated by a live operator or call center agent to provide operator services, customer services, and other enhanced services requiring human operator intervention. Another example of an ISN component 122 is the ARU. The ARU is comprised of a network audio server (NAS) and an automated call processor (ACP). The ARU is used to provide automated operator services and interactive voice response services. The ACP is a high performance personal or midrange computer that performs intelligent application processing to determine which services to provide. The NAS is a specialized computer equipped with telephony ports which provides audio responses and collects caller input via dual tone multifrequency (DTMF) signals and voice recognition based on commands provided by the ACP. The ACPs communicate with the NASs via LANs, WANs, and routers 120. Each ARU/NAS and MOC is connected to one or more programmable switches via voice trunks (not shown). Both MOCs and ARUs are also referred to as agents.

An additional example of an ISN component 122 is a NIDS server and database. A NIDS server and database stores data related to call processing such as customer accounts and routing translations. When an ISN component, such as an ARU or a MOC, receives a call, it may query a NIDS server for data stored in the NIDS database. The NIDS servers receive data from mainframe-based systems to be used during real time call processing. Order entry and data management functions are performed within mainframe based systems. Mainframe computers are used as the databases of record for call processing data. A data distribution system (DDS) distributes the call processing data stored in the mainframe computers over a token ring LAN to each NIDS server.

The ISN components also include protocol converters that convert between various telecommunications protocols. Protocol converters provide protocol conversion between different protocols such as TCP/IP, NSPP on top of UDP/IP, and packet switching protocols, such as X.25. Exemplary components that perform protocol conversion are described in U.S. patent application Ser. No. 08/967,339 filed Oct. 21, 1997 entitled, “Advanced Intelligent Network Gateway” and U.S. patent application Ser. No. 08/956,220 filed Oct. 21, 1997 entitled, “Validation Gateway,” both of which are incorporated herein by reference in their entirety. Additional ISN components 122 are described in copending U.S. patent application Ser. No. 08/956,232 filed Oct. 21, 1997 entitled, “A System and Method for Providing Operator and Customer Services for Intelligent Overlay Networks,” incorporated herein by reference in its entirety.

Additional ISN components 122 include standalone PC workstations for system management, force management and configuration provisioning.

Some ISN components 122, such as protocol converters, are connected to external networks and resources. Exemplary external networks and resources include financial processors with credit card information, the Internet, and other databases, such as those used in processing international calls.

3.0 Resource Management within the Switch Controller

The switch controller application program 118 of the present invention is preferably implemented using a computer system 202 as shown in block diagram form in FIG. 2. The computer system 202 includes one or more processors such as processor 206 connected to bus 204. Also connected to bus 204 is main memory 208 preferably random access memory (RAM) and secondary storage devices 210, secondary storage devices 210 include for example a hard drive 212 and a removable storage medium storage device 214 such as a disk drive.

The switch controller application program 118 is preferably a computer program that resides in main memory 208 while executing. Thus, the switch controller application program 118 represents the controller of the computer system 202 (and of the processor 206). Alternately, the switch controller application program 118 is predominantly or entirely a hardware device such as a hardware state machine.

In one embodiment, the present invention is a computer program product such as removable storage medium 216 representing a computer storage disk, compact disk etc., comprising a computer readable media having control logic recorded thereon. The control logic, when loaded into main memory 208 and executed by processor 206, enables the processor 206 to perform operations as described herein. The switch controller application program 118 includes commands which comprise the resource management routine 114 which, in one embodiment of the present invention, reside in main memory 208 and are processed by the processor 206.

FIG. 3 is a block diagram of a resource management environment 302 according to one embodiment of the present invention. The block diagram of a resource management environment 302 illustrates the protective layer concept of the resource management routine 114. Within the resource management routine 114 are resource managers 304A, 304B, 304C . . . 304 n (304). Resource requesters 306A, 306B, 306C . . . 306 n (306) obtain information about resources 310A, 310B, 310C . . . 310 n (310) by communicating with the resource managers 304. Thus, the resource managers 304 provide a protective layer for the resources 310. Except as otherwise noted, when the resource managers 304, resources 310, and resource requesters 306 are referred to generally, they will be referred to with the number designation only and not a letter designation.

The resource management routine 114 comprises the resource managers including resource manager (1) 304A, resource manager (2) 304B, resource manager (3 ) 304C, and resource manager n 304 n.

Resources 310 include the equipment comprising the ISN 126 and enhanced service call processing information. Equipment comprising the ISN 126 includes the components comprising the programmable switch 110, components comprising the switch controller 112, and ISN components 122. Examples of components comprising the programmable switch 110 are ports, central processing unit (CPU) capacity, switch matrix, etc. Examples of components comprising the switch controller 112 are CPU capacity, shared memory capacity, etc. In addition, enhanced service call processing information is a resource 310. Enhanced service call processing information includes information about enhanced service calls, such as call identification numbers, leg identifiers, billing time points, etc.

Resource requesters 306 include the switch controller application program routines 116 (system control process, programmable switch support function, call control function, service control function, and management interface function). In addition, any routine in a computer program in a telecommunications network. component that can access the resource management routine 114 may be a resource requester 306.

Each resource manager 304 provides a protective interface for a particular corresponding resource 310. For example, resource manager (1) 304A provides a protective interface for resource (1) 310A. If a resource requester 306 wants information about a resource 310, the resource requester interfaces with the appropriate resource manager 304. For example, FIG. 3 illustrates resource requester (3) 306C requesting information from both resource manager (1) 304A to gain information about resource (1) 310A, and resource manager (3) 304C, to gain information about resource (3) 310C. If resource requester (3) is the service control function, the service control function may request information about agents and call data block information. The service control function would access a resource manager for information about the agents and another resource manager for information from the call data block.

Multiple resource requesters 306 may obtain information about a resource 310 by accessing the appropriate resource manager 304. For example, resource requester (1) 306A and resource requester (2) 306B request information from resource manager (2) 304B to gain information about resource (2) 310B. If the programmable switch support function and the management interface function need information about a component of the programmable switch 110, both routines access the resource manager 304 corresponding to the programmable switch component 110.

FIG. 4 is a block diagram of a resource management interface 402. The resource management routine 114 provides the resource management interface 402. The resource management interface 402 illustrates that in order to access information about a resource 310, a resource requester 306 accesses the appropriate resource manager 304. Exemplary resource requester (1) 306A accesses resource manager (2) 304B to obtain information about a corresponding resource (2) 310B. If exemplary resource requester (1) 306A needs information about resource (1) 310A or resource n 310 n, the resource requester (1) 306A will access the corresponding resource manager 304, particularly resource manager (1) 304A or resource manager n 310 n respectively. As a result, information about resources 310 is accessed in a standardized manner by each of the resource requesters 306. In addition, the resource requesters 306 are not required to have individual procedures for accessing information about resources 310. Rather, the resource requesters 306 use the generic procedures within the resource manager 304.

Each resource manager 304 includes one or more resource manager application programmer interfaces (APIs) 404 and one or more resource manager tables 406, referred to interchangeably as electronic libraries. For example, resource manager (1) 304A includes resource manager API(s) (1) 404A and resource manager table(s) (1) 406 a; resource manager (2) 304B includes resource manager API(s) (2) 404B and resource manager table(s) (2) 406B; and resource manager n 304 n includes resource manager API(s) n 404 n and resource manager table(s) n 406 n. Except as otherwise noted, when the resource manager APIs 404 and resource manager tables 406 are referred to generally, they will be referred to with the number designation only and not a letter designation.

The resource manager tables 406 reside in memory of the switch controller and store information about resources 310. The resource management APIs 404 are procedures that are used to access the stored information. Resource management APIs 404 are commands that are stored in the main memory and processed by the processor of a computer. In order to process a resource management API 404, the processor calls the resource management API 404 from main memory. The resource management API 404 processes by executing commands using input data. Completion of the execution of the resource management API 404 results in return data which is the data requested and/or data indicating whether the transaction was successful and an output which is an action requested by the initiating routine.

FIG. 5 illustrates the operation of resource manager process flow 502. In step 506 the resource requester sends a query to the appropriate resource manager 304 using the resource manager API 404. For example, as shown in FIG. 4 resource requester (1) 306A would send a query using the resource manager API (2) 404B to resource manager (2) 304B to access information in resource manager tables (2) 406B. The switch controller uses UNIX interprocess communications (IPC) capabilities in order to facilitate communication among the routines of the switch controller. Particularly, UNIX IPC queues and shared memory capabilities are used.

Switch controller application program routines 116 send queries to well known IPC queues. The queries contain a reference pointer to shared memory. The shared memory is dynamically allocated and contains data needed to perform the resource manager API 404 request. The processor 206 (shown in FIG. 2) executes the resource manager API 404 commands residing in memory which preferably is main memory 208 but may be secondary memory 210 including hard disk 212 or a removable medium 216. In the example above, the processor executing the resource manager (2) API 404B commands generates a query which is sent from the resource requester (1) 306A (shown in FIG. 4 and FIG. 3) to a queue associated with resource manager (2) 304B. The queue includes a reference pointer to shared memory with data needed to retrieve information about the resource 310.

For example, if the resource requester 306 is the call control function, an exemplary communication is the call control function writing call information to the call data block. In the example, the call information is the resource (2) 310B. The call control function will send a query using the call data block resource manager API 404 to set information in the call data block. The call data block is the resource manager table 406.

In step 508 data is retrieved or updated in the appropriate resource managers table 406. In order to retrieve data from or update a resource manager table 406, the resource manager 304 retrieves the reference pointer contained in the query that was sent in step 506, accesses the shared memory pointed to by the reference pointer, and retrieves data from shared memory needed to retrieve data from or update the resource manager table 406. In the example illustrated in FIG. 4, the resource manager (2) 304B retrieves the reference pointer in the query sent by resource requester (1) 306A in step 506, accesses the shared memory pointed to by the reference pointer, and retrieves the data from shared memory needed to retrieve data from or update the resource manager table (2) 406B.

After retrieving the data from shared memory, the resource manager 304 performs the requested resource manager API 404 procedure which involves retrieving information from or updating the resource manager table 406. In the example illustrated in FIG. 4, the resource manager (2) 304B performs the resource manager API (2) 404B procedure and retrieves information from or updates resource manager table (2) 406B.

For an exemplary request by the call control function to write information to the call data block, the call data block resource manager will retrieve the reference pointer from the query sent by the call control function (which is the resource requester 306). The call data block resource manager will access shared memory pointed to by the reference pointer and retrieve the data from shared memory to retrieve data from or update the call data block, which is the call data block resource manager table. Exemplary data includes a call identifier that can be used to access the call data block information for a particular call. The call data block resource manager will write the data to the call data block. The call data block resource manager API and call data block table will be described in further detail with respect to FIG. 6.

To ensure that multiple resource requesters 306 do not access the same information within a resource manager table 406, a semaphore variable is set if a resource requester 306 is accessing information. A semaphore variable is a variable that has two possible values, one value indicating that data may be accessed and another value indicating that data may not be accessed. Semaphore variables may control access of a table or of just one data element within a table. Semaphore variables are resources as they are needed for enhanced service call processing. Procedures for retrieving information about or updating semaphore variables are defined by the semaphore variable APIs. Information about semaphore variables, such as the value of the variable, is stored in a semaphore variable table.

In step 510 the resource manager 304 responds using the resource manager API 404. Completion of the execution of the resource manager API 404 results in return data which is the data requested and/or data indicating whether the transaction was successful. Also, the completion of the execution of the resource manager API 404 may result in an output, which is an action requested by the initiating routine. Neither return data nor output is necessary for successful processing by the resource management API 404 but may be useful in providing data and/or ensuring a transaction completed successfully.

Exemplary Resource Management Embodiment

A. Overview

FIG. 6 is a block diagram 602 of an exemplary embodiment of a resource management 114. Resource management 114 includes numerous resource managers 604-622. In one embodiment, these resource managers include the tabman resource manager 604, queman resource manager 606, sysmem resource manager 608, shmman resource manager 610, semaphore resource manager 612, switch controller resource manager 614, agent resource manager 616, call data block resource manager 618, service logic program resource manager 620 and switch resource resource manager 622. These various resource managers are described in further detail in Tables 1-69.

B. Tables 1.0 Tabman Resource Manager 604 API Tables Tabman Client Table APIs Table 60 Tabman Service Descriptor APIs Table 61 Tabman Service Table APIs Table 62 Other Tabman APIs Table 63 Data Structure Tables Tabman Client Table Table 67 Data Structure Tabman Service Descriptor Table Data Table 68 Structure Tabman Service Table Data Structure Table 69 2.0 Queman Resource Manager 606 API Table Queman APIs Table 64 3.0 Sysmem Resource Manager 608 API Table Sysmem APIs Table 65 4.0 Shmman Resource Manager 610 API Table Shmman APIs Table 66 5.0 Semaphore Resource Manager 612 API Table Semaphore APIs Table 1 6.0 Switch Controller Resource Manager 614 API Tables Switch Controller Common Library Memory Table 2 Segment APIs Operational Measurements Area APIs Table 3 Heartbeat Table APIs Table 4 Data Structure Tables IPC Table Table 12 Switch Controller CPU Availability Table 13 Switch Controller Disk Availability Table 14 Queman APIs Table 64 3.0 Sysmem Resource Manager 608 API Table Sysmem APIs Table 65 4.0 Shmman Resource Manager 610 API Table Shmman APIs Table 66 5.0 Semaphore Resource Manager 612 API Table Semaphore APIs Table 1 6.0 Switch Controller Resource Manager 614 API Tables Switch Controller Common Library Memory Table 2 Segment APIs Operational Measurements Area APIs Table 3 Heartbeat Table APIs Table 4 Data Structure Tables IPC Table Table 12 Switch Controller CPU Availability Table 13 Switch Controller Disk Availability Table 14 Agent Operational Measurement Counts Table 15 Switch Port Operational Measurement Table 16 Counts Control Table for Heartbeat Table Table 17 Heartbeat Table Table 18 7.0 Agent Resource Manager 616 API Table Agent Memory Segment APIs Table 5 Agent Table APIs Table 6 Group Table APIs Table 7 Assignment Table APIs Table 8 Data Structure Table Control Table for Agent Table Table 19 Agent Table Table 20 Agent Attributes Table Table 21 Agent Time Stamps Table Table 22 Agent Counts Table Table 23 Control Table for Group Table Table 24 Group Table Table 25 Calls Queued Per Group Table Table 26 Control Assignrnent Table Table 27 Assignment Table Table 28 Assignment Data Table Table 29 Mapping Table Table 30 Fast Search for Agent Table Table 31 Group Search Table Table 32 Line Card Table Table 43 CPU Card Table Table 44 DSP Table Table 45 SIMM Table Table 46 MFDSP Table Table 47 Stack Table Table 48 Linkset Table Table 49 Link Table Table 50 Destination Table Table 51 Route Table Table 52 SS7 Table Table 53 EXNET Table Table 54 Facility Table Table 55 Charmel Table Table 56 ISDN Card Table Table 57 Other Card Table Table 58 Card Union Table Table 59

C. Description of Exemplary Resource Manager

The call data block resource manager 618 is described with respect to Table 9 to provide an exemplary illustration of the information contained in the tables. The call data block resource manager 618 comprises call data block APIs and call data block resource manager tables. Call data block APIs are described in Table 9. Call data block APIs provide procedures for managing call data block information. Call data block information includes call related data obtained in processing a call and used to identify the call, elements of the call, such as the call legs, and provide information for billing the call, such as billing time points. The call data block resource manager tables are illustrated in Tables 33-36.

Exemplary cdb_GetCDBData API provides procedures for retrieving call data block information from the call data block table. Table 9 provides information about the call data block APIs. The first column provides the API name. In the exemplary API shown in the eighth row of Table 9, the first column indicates the name of the API is cdb_GetCDBData. The second column of Table 9 indicates the function. With respect the exemplary API cdb_GetCDBData, the function is to get a CDB's detailed data. The third column of Table 9 provides input parameters. For the exemplary API, cdb_GetCDBData, the inputs required are the 1 Cid, which is the call identifier, and the pstCDBData, which is the address of where the CDB data should be saved. The fourth column of Table 9 provides the output of the API. For the exemplary cdb_GetCDBData API, the output is saving the CDB data at the pstCDBData address. The fifth column provides the return of the API. For the exemplary cdb_GetCDBData API, the possible returns are: CDB_SUCCESS, CDB_SHM_NOT_ATTACH, CDB_KEY_INVALID, CDB_INPUT_ADDR_INVALID. CDB_LOCK_REC_ERR, and CDB_UNLOCK_REC_ERROR.

D. Description of Other Resource Managers

Additional resource managers are described in the tables. The semaphore resource manager 612 comprises semaphore APIs and semaphore resource manager tables. In Table 1, semaphore APIs are described. Semaphore APIs provide procedures for managing semaphore variables. Semaphore variables are UNIX constructs that lock and unlock memory segments. The semaphore variables within the switch controller 112 provide controlled access to data related to ISN resources. A set of semaphore variables is created for each table for access to the resource data stored in the table. Semaphore variables act as gatekeepers for memory by preventing multiple processes from accessing a particular memory segment simultaneously. The number of processes that may access a memory segment may be adjusted by modifying a configurable variable. The value of the configurable variable establishes the threshold value of the number of processes allowed access. Two locking schemes for semaphore variables are locking of an entire table and locking of one entry within a table. The semaphore resource manager tables may be any semaphore table such as those traditionally used with UNIX platforms.

The switch controller resource manager 614 comprises switch controller APIs and switch controller resource manager tables. The switch controller resource manager APIs and switch controller resource manager tables include (1) switch controller common library APIs, (2) operational measurements area APIs and tables, and (3) heartbeat APIs and tables.

In Table 2, switch controller common library APIs are described. The switch controller common library APIs affect the switch controller common library memory segment. The switch controller common library memory segment supports shared memory used to store heartbeat information and provides an operational measurements area where processes can deposit statistical data. Switch controller common library APIs are used to create and delete the switch controller common library memory segment. In addition, switch controller common library APIs are used by routines to attach and detach from the switch controller common library memory segment.

In Table 3, operational measurements area APIs are described. Operational measurements area APIs provide procedures for managing operational measurements data. Operational measurements data includes statistics of the components of the switch controller, such as disks, central processing unit (CPU) available memory, ports, and other similar data. Tables 12-18 provide additional information describing the tables used to store operational measurements data.

In Table 4, heartbeat table APIs are described. Heartbeat table APIs provide procedures for managing heartbeat data. Heartbeat functionality is used to monitor the health of the processes within the switch controller 112. A process manager routine within the management interface function is responsible for sending heartbeat requests to other switch controller application program routines 116 within certain intervals. The recipient switch controller application program routines 116 are responsible for responding to the heartbeat requests within established intervals. Process management determines when and what action should be taken when a process is not responding in a proper manner.

Heartbeat requests and responses are conveyed by setting request and response flags through shared memory. Heartbeating through shared memory is more efficient than heartbeating by sending messages through message queues because heartbeating through shared memory reduces the message volume within the switch controller.

Use of shared memory for heartbeating is described. The shared memory segment used to perform heartbeating is referred to as the heartbeat area. In one embodiment, one of the switch controller application program routines 116 is a process manager. A process manager oversees the heartbeating function and uses a resource management API to create the heartbeat shared memory segment. Within the shared memory segment, an entry is created for each switch controller application program routine 116. The entry contains heartbeat information, such as the switch controller application program routine identifier, heartbeat interval, heartbeat state (eg. register, request, or respond), request time stamp, and unresponded time and count. Heartbeat intervals can be set to different values for different switch controller application program routines 116. Table 18 provides an exemplary table used to store heartbeat data. Table 17 illustrates an exemplary control table used to control the heartbeat table.

The process manager brings up each of the other switch controller application program routines 116. The switch controller application program routines 116 attach to the heartbeat segment. To initiate processing with a particular switch controller application program routine 116, the process manager uses a resource management API to register each switch controller application program routine's 116 heartbeat entry and establishes its heartbeating interval. The interval may be modified using another resource management API.

The process manager informs each of the switch controller application program routines 116 of the need for heartbeating by sending a message with the switch controller application program routine's 116 heartbeat handle. The process manager calls a heartbeat request API to indicate a heartbeat request. When the routine 116 receives an initial heartbeat setup message, it immediately calls a respond heartbeat API. Each time a process calls a respond API, it will get a time which tells the process when it should next call the respond API. The routines 116 can get the current set heartbeat interval time using this API as well. When switch controller application program routines 116 exit, they detach from the memory segment. During switch controller 112 shutdown, a delete heartbeat segment is called to remove the segment from the system.

Additional resource managers are described in the tables. The agent resource manager 616 comprises agent APIs and agent resource manager tables. Agent APIs include APIs to manage agent, group, and agent assignment tables. Agent table, group table, and assignment tables are stored in one shared memory segment and share the same shared memory identifier. In Table 5, agent memory segment APIs are described. Agent memory segment APIs provide procedures for managing the agent memory segment. Agent memory segment APIs are used to create and delete the agent memory segment. In addition, agent memory segment APIs are used by routines to attach and detach from the agent memory segment.

In Table 6, agent table APIs are described. Agent table APIs provide procedures for managing agent tables. Agent tables include information about agents, such as terminal identifiers, agent logon identifiers, and associated groups. After an agent establishes a connection with the switch controller and logs on, its operating state in an agent table will be updated as capable of processing calls. In addition, after the agent logs off, its operating state will be changed to unable to handle calls. An agent API is provided to find an agent within a particular group. In addition, APIs to dynamically add and delete an agent entry are also provided. Tables 20-23 illustrate tables used to store information about agents. In addition, Tables 30-32 provide tables used to store general information about agents.

In Table 7, group table APIs are described. Group table APIs provide proccdures for managing the group tables. Agents are grouped together according to their call processing functionalities. Agent group information includes information about the groups, agents assigned to the group and the number of calls queued to the group. Tables 24-26 illustrate tables used to store agent group information.

In Table 8, assignment table APIs are described. Assignment table APIs provide procedures for managing the assignment table. An agent group can have any number of agents assigned to it and an agent can be assigned to multiple groups. In order to describe the cross referencing between the agent table and group table, a separate agent assignment table is created. Tables 27-29 illustrate tables used to store agent assignment information.

The service logic program resource manager 612 comprises service logic program APIs and service logic program resource manager tables. In Table 10, service logic program APIs are described. Service logic program APIs provide procedures for managing the service logic program table. The service logic program table contains call identifier, call feature, call state and event information. The service logic program table is separate from the call data block. The service logic program table is organized on the service level. If a service logic program terminates abnormally, the service logic program can attach to this table and have access to most of the information needed about the calls in progress. Table 37 illustrates the table used to store service logic program data.

The switch resource resource manager 622 comprises switch APIs and switch resource manager tables. In Table 11, switch APIs are described. Switch APIs provide procedures for managing switch data.

Switch data includes switch matrix, card, node, span, trunk group, and other information related to the programmable switch 110 controlled by the switch controller 112. A switch matrix performs the switching functionality of interconnecting two channels, a channel from the caller and a channel to the receiver, in order to switch a call to a final destination. A card is a microprocessor chip board that is programmed to perform a specialized functionality. Cards within the programmable switch 110 are programmed with different software to perform various functions. Nodes are points of interconnection in a telecommunications network. Spans are telecommunications cables, typically fiber optic, however any medium capable of transmitting signals may used, that interconnect two components in a telecommunications network. Channels are bandwidth allocations that may be assigned to a particular call. Trunk groups are designations within software that are used for traffic routing purposes. Channels are assigned to trunk groups and a particular trunk group routes traffic between the destinations interconnected by the channels assigned. When a call is received, the destination number is used to select an appropriate trunk group and route the call via a channel assigned to the trunk group to the destination. Tables 38-59 provide additional information describing the tables used to store switch data.

While various embodiments of the present invention have been described above it should be understood that they have been presented by way of example only not limitation. Thus the breadth and scope of the present invention should not be remitted by any of the above described exemplary embodiments but should be defined only in accordance with the following claims and their equivalents.

TABLE 60 Tabman Client Table APIs API Function Input Output Return Add Client Add a NSPP client entry specified szClientName - client name Handle of the client or by client name and NIDS address to pstClient Addr - client address INVALID_HANDLE on ciient. Return the client handle. error AddUDPClient Add a UDP client entry specified by szClient Name - client name Handle of the client or client name and UDP address to pstClientUDPAddr - UDP INVALID_HANDLE on client. Return the client handle. client addr error DeleteClient Delete a client entry specified by hClientHandle - client handle INVALID_HANDLE - client handle Handle is not valid TRUE - client entry is deleted CLIENT_HAS_SERVICE - Client has associated service, needs to delete that service before delete this entry GetClientHandle Look for a client entry specified by szClientName - client name Client handle - found one client name and NIDS address. pstClientAddr - client addr match INVALID_HANDLE - no match GetUDPClientHandle Look for a client entry specified by szClientName - client name Client handle - found one client name and UDpaddress. pstClientUDPAddr - client match addr INVALID_HANDLE - no match GetClientRecord Copy one filed of a client's record to hClientHandle - client handle pchBuffer OK_CC or BAD_CC the place that pchBuffer points to. sOffset - offset of the field within the client table structure sSize - size of that field pchBuffer - buffer to copy the field to GetClientData Copy the whole record of one client. hClientHandle - client handle pstClTable OK_CC or BAD_CC pstClTable - buffer to copy the client record to PutClientRecord Update one field of a client table hClientHandle - client handle OK_CC or BAD_CC entry specified by client_handle. sOffset - offset of the field within the client table structure sSize - size of that field pchBuffer - buffer of client record to copy from IncClientRecord Increment one field of a client's hClientHandle - client handle OK_CC or BAD_CC record. sOffset - offset of the field within the client table structure sSize - size of that field DelClientFirstService Delete the client's first service entry RClientHandle - client handle OK_CC or BAD_CC from service table and update this client entry's service_handle field. GetClientCount Return total number of clients that None Number of clients connected connected to the Switch Controller. to switch controller ValidClient Check whether the client handle is hClientHandle - client handle TRUE or FALSE valid. LockClient Lock the specified client table entry hClientHandle - client handle TRUE or FALSE - invalid to guarantee an exciusive access to handle this entry. UnLockClient Unlock the specified entry to allow hClientHandle - client handle TRUE or FALSE - invalid other process to access to it. handle GetClientPtr Return the pointer to the table entry hClientHandle - client entry handle Pointer to the table entry specified by client_handle. ExternalClient Check whether the client is from a hClientHandle - client entry handle TRUE or FALSE different platform. ThisClientHandle Returns the current server handle. None Server handle BroadcastHandle Returns the broadcast handle. None Broadcast handle

TABLE 61 Tabman Service Dcscriptor Table APIs API Function Input Output Return AddDesc Add a service descriptor entry to the uchDescType - descriptor type The new entry handle or table. szDescName - descriptor name INVALID_HANDLE on error DeleteDesc Delete a service descriptor entry. hDescHandle - descriptor entry handle INVALID_HANDLE - invalid handle TRUE - entry delete DESC_HAS_SERVICE - this entry still has pointer to service, entry not deleted DelDescFirstService Delete the first service entry in the hDescHandle - descriptor entry handle OK_CC or BAD_CC service table this service descriptor entry points to. GetDescHandle Look for a service descriptor entry szDescName - descriptor name descriptor handle or with the specified service name. INVALID_HANDLE - no match GetDescRecord Copy one field of a service hDescHandle - descriptor entry handle pchBuffer OK_CC or BAD_CC descriptor entry to pchBuffer. sOffset - offset of the field within the descriptor table structure sSize - size of that field pchBuffer - buffer to copy the field to GetDescData Copy the entire entry specified by hDescRandle - descriptor entry handle buf OK_CC or BAD_CC desc_handle to buffer pointed to by buf - descriptor entry record buffer buf.. pointer GetDescAutoDel Gets descriptor information from hDescHandle - descriptor entry handle puchSrvType, OK_CC or BAD_CC the Desc table. puchSrvType - buffer to save service pfAutoDel and type pQhandle pfAutoDel Ctree info pQhandle - queue handle PutDescRecord Update one field of service hDescflandte - descriptor entry handle OK_CC or BAD_CC descriptor table. sOffset - offset of the field within the descriptor table structure sSize - size of that field pchBuffer - buffer to copy ffie field from IncDescRecord Increment one field of a descriptor hDescHandle - descriptor handle OK_CC or BAD_CC table entry. sOffset - offset of the field within the descriptor table structure sSize - size of that field GetDescCount Get the service descriptor count. None Number of service descriptor entries in table GetDescStatus Check the descriptor table status. TRUE - changed from the last call FALSE - no change

TABLE 62 Tabman Service Table API Function Input Output Return AddService Add a service table entry in service hClientHandle - client handle Service handle table. hDescHandle - descriptor table handle INVALlD_HANDLE - invalid handle (error) DeleteService Delete the service table entry hServHandle - service table handle TRUE - deleted specifled by its srvc_handle. INVALID_HANDLE - invalid handle (error) GetServiceRecord Copy one field of a service table hServHandle - service entry handle pchBuffer OK_CC or BAD_CC entry to pchBuffer. sOffset - offset of the field within the service table structure sSize - size of that field pchBuffer - buffer to copy the field to GetServiceData Copies an entire service record hServerHandle - service table handle pstSrvcTable, OK_CC or BAD_CC from the service table. Copies the pstsrvcTable - buffer to hold a service pchLocalDyn- DynShm pointed by service table to record ShmBuff dbprocess local Dyn Shm Buffer. pchLocalDynShmBuff - local dynamic share memory buffer usLocalDynShinBuffLen - size of the buffer hClientHandle - client handle entry PutServiceRecord Puts a service record field to the hServHandle - service entry handfe OK_CC or BAD_CC table. sOffset - offset of the field within the service table structure sSize - size of that field pchBuffer - buffer to copy the field from IncServiceRecord Increments one field of the service hServHandle - service entry handle OK_CC or BAD_CC record. sOffset - offset of the field within the service table structure sSize - size of that field GetServiceCount Get the number of service entries. None Service count BAD_CC on error LockService Lock the service entry. hClientUandle - client handle TRUE - locked hServerffandle - service handle FALSE - invalid service handle UnLockService Unlock the service entry. hClientHandle - client handle TRUE - locked hServerHandle - service handle FALSE - invalid service handle

TABLE 63 Other Tabman APIs API Function Input Output Return CreatTable Used by startup process to create usNoOfClients max number of client OK_CC or BAD_CC client, service descriptor and service table entry tables. usNoOfSrvcs - max number ofservice table entry usNoOfDescs - max number of descriptor table entry AttachTable Attach to client, service descriptor OK_CC or BAD_CC and service tables. TableCleanUp Remove ctient, descriptor and service None None table share memory and semaphores from system. Current NIDS provides a set of semaphore operations. They are used to cooperate processes in accessing shared resources AttachSem Lock the number usNoOfSem in the sSemId - semaphore id of the semaphore None semaphore set. set usNoOfSem - offset of the semaphore DetachSem Unlock the number usNoOfSem in the sSemld - semaphore id of the semaphore None semaphore set. set usNoOfSem - offset of the semaphore

TABLE 67 TABMAN CLIENT TABLE DATA STRUCTURE typedef struct ClientTableTyp { CHAR achClientName[NIDS_CLIENT_NAME_LEN]; /* client name */ USHORT usAddressFamily; /* NIBS address or UP address NIDS_ADDRESS stClientAddress; /* client address NIDS_UDP_SOCK_ADDRESS StClientUDPAddress; /* client UP address */ ULONG ulLastReceived; /* last packet received time */ SHORT sWDCount; /* unresponded watchdogs */ USHORT usCurrentPacketNum; /* control data */ USHORT usReceivedPacketNum; /* last received packet sequence num. */ USHORT usLastSendablePacketNum; /* last sendable packet seq. num. */ USHORT usClientsLastSendable; /* client last sendable packet */ VOID *pstNewList; /* new packet Iist */ VOID *pstOldList; /* old packet list */ BOOL ProtectField; /* used by table handler */ BOOL fClientused; /* Client entry used */ USHORT hServiceHandle; /* Service Handle */ USHORT hNextClientHandle; /* handle of next client (used element) */ USHORT hPrevClientHandle; /* handle of Pre client (used element) */ } ClientTableTyp;

TABLE 68 TABMAN SERVICE DESCRIPTOR TABLE DATA STRUCTURE typedef struct DescTableTyp CHAR achServiceName[NIDS_SERVICE_NAME_LEN]; /* service name */ UCHAR uchServiceType; /* service type flag */ BOOL fDisabled; /* service status */ USHORT usConsoles; /* number of clients */ QHAND hQueueHandle; /* handle ofprocess queue */ VOID *pvMessage; /* pointer to any message that you */ /* may want to store */ ULONG ulHostSendDiskQues; /* Disk queues for a particular Hostsend */ ULONG ulBdrSendDiskQues; /* Disk queues for a particular Bdrsend */ DescTyp stDesc; /* union of service description */ BOOL ProtectField; /* used by table handler */ BOOL fserviceDescUsed; /* Service Desc Used? */ USHORT hServiceHandle; /* handle to service table */ USHORT hNextDescHandle; /* next service description */ USHORT hprevDescHandle; /* Prev service description */ } DescTableTyp;

TABLE 69 TABMAN SERVICE TABLE DATA STRUCTURE Typedef struct ServiceTableTyp SrvcTyp stSrvc; /* service type */ QHAND hQueueHandle; /* handle of process queue */ void pLocalRespMsg; /* Cail reorigination */ BOOL ProtectField; /* used by table handler */ BOOL FServiceUsed; /* Service Used? */ USHORT hClientHandle; /* client handle to client table */ USHORT hNextClientService; /* next client Service */ USHORT hPrevClientService; */ Prev client Service */ USHORT hNextServiceHandle; /* forward next service */ USHORT hPrevServiceHandle; /* backward next service */ USHORT hDescHandle; /* Service Description Handle */ } ServiceTableTyp; tab14.wpd

TABLE 64 Queman APIs API Function Input Output Return CreateDynamicQueue Create a dynamic (not predefined processes) queue. This procedure will use a predefined directory, a file name generated by puchServiceNamePtr to generate a unique key and use this key to generate a queue ID. CreateStaticQueue Create message queue for pre- sProcessNumber - process number actual queue id is updated Queue handle defined processes and associated (well known queue ID) in SYSVARs queue array them with well know pseudo identifiers. ReadMessageQueue Read message from queue and save sPQid - well know queue id usMsgType, OK_CC - read the message pointer to uMsgType - message type ppvMsgPointer message successfully ppvMsgPointer. lLongParm - specify what type of 1 - no message if message should be read QUEUE_NOWAIT is 0 - the first message on the queue specified in sNoWait should be returned BAD_CC - no >0 - the first message with a type message if otherwise equal to this long number should be returned <0 - the first message with the lowest type that is less than or equal to the absolute value of this long number ppvMsgPointer - message pointer sNoWait - blocking read or non- blocking read WriteMessageQueue Write a message to a queue. sPQid - well know queue id OK_CC or BAD_CC usMsgType - message type pmsgMsgPointer - message pointer RemoveMessageQueue Remove a queue from the system sPQid - well know queue ID OK_CC or BAD_CC and update the queue id array, release message memory if there are still messages in the queue.

TABLE 65 Sysmem APIs API Function Input Output Return CreateShmSystemVars Initially create the SYSVARS shared memory None OK_CC or BAD_CC segment and semaphore. AttachSysvarsSharedMem Attach to the SYSVARS memory segment. None OK_CC or BAD_CC DetachSysvarsSharedMem Detach from the SYSVARS memory segment. puchSharedAddress - attached address OK_CC or BAD_CC

TABLE 66 Shmman APIs API Function Input Output Return InitDynShmPool Creates and initializes one dynamic shared usPool - SMALL or LARGE OK_CC or BAD_CC memory and one control segments. ulSegSize - segment size ulBlockSize - block size usPartitions - number of partitions in the segment ulVariableSize - the variable size partition size (There can be only one such partition segment) AttnDynShmPool Attaches to one dynamic shared memory pool. usPool - SMALL or LARGE TRUE - attached FALSE - error AllocDynShmPool Allocates blocks of memory from a dynamic ulSize - the size want to be allocated The address of the shared memory pool. usPool - SMALL or LARGE allocated block null - failed GetDynShmAvailPool Adds the available memory in each partition of usPool - SMALL or LARGE None a share memory segment and stores the result in the appropriate element of the AvailMem array in the system shared memory segment. FreeDynShmPool Frees a block of memory in the specified pvBlockAddr - the address of the block OK_CC or BAD_CC memory pool. usPool - SMALL or LARGE RemoveDynShmPool Removes a dynamic shared memory pool. usPool - SMALL or LARGE None CombDynShmPool Recombines contiguous idle blocks in the usPool - SMALL or LARGE OK_CC or BAD_CC partitions that aren't coagulated in the specified pool.

TABLE 1 SEMAPHORE APIs API Function Input Return Pseudo Code Sem_Create Create a semaphore PsSem ID (where to same semaphore ID) φ: OK Table Sem set for a table. 1Key (semaphore key) −1: Error US Max Table Entries (maximum number of table entries) 1SemFlag (semget flag to indicate access right of semaphore) Sem_Init Initialize all the Semaphore ID 0: OK Table Sem semaphores in a −1: Error semaphore set. Sem_Delete Delete a semaphore sSemId - (semaphore ID) 0 - OK Sem set. −1 - on error Sem_Attach Get the semaphore psSemId - (where to 0 - OK Sem ID of existing save the semphore ID) −1 - on error semaphore. 1Key - (semaphore key) 1 SemFlag - (semget flag to indicating access right of the semaphore) Sem_Lock Lock the entire sSemId - (semaphore ID) 0 - OK Wait until [0] is 1 and decrement it by 1 to Table table. sSemFlag - (semaphore operation flag, like −1 - error indicate table lock request, also this will block SEM_UNDO) all further record locking request. Wait until (1) to be 0. (Wait until no record locking to this table.) If the last two steps are successfully executed, the table is in force. Sem_Unlock Unlock the entire sSemId - (semaphore ID) 0 - OK Check to make sure [0] is 0, which means table Table table. sSemFlag - (semaphore operation flag, like −1 - error is locked. Increment [0] by 1 to release the SEM_UNDO) table lock. Sem_Lock Lock one entry of sSemId - semaphore ID 0 - OK Wait [0] is 1 and decrement it by 1. (Wait until Table Entry the table. sTableEntryNo - table entry number (from 1 to −1 - error the table is not locked by others and lock it.) ...) Increment [1] to increment the record locking sSemFlag - semaphore operation flag, like counter. Increment [0] by 1 to release the SEM_UNDO entire table lock. Last three steps are one atomic operation, in this way the record locking requirement will be executed if the record is not locked or queued, so entire table lock request will be executed after this. In this way we implemented first come, first serve. Wait [X] to be 1 and decrement it by 1. After this step is successfully executed, the table entry is locked. Sem_Unlock Unlock one entry of sSemId - (semaphore ID) 0 - OK Increment [X] by 1 to release the record Table Entry the table. sTableEntryNo - (table entry no. (from 1 to −1 - Error locking. Decrement [1] to decrement the record ....)) locking counter. These two steps should be one sSemFlag - (semaphore operation flag, like atomic semaphore operation SEM_UNDO) Sem_Lock Lock one entry of sSemId - semaphore ID 0 - OK wait [X] to be 1 and decrement it by 1. Sem One the semaphore. sEntryNo - semaphore number (from 1 to ...) −1 - Error sSemFlag - (semaphore operation flag, like SEM_UNDO) Sem_Unlock Unlock one entry of sSemId - (semaphore ID) 0 - OK Increment [X] by 1 to the lock. Sem One the semaphore. sEntryNo - (semaphore entry no. (from 1 to −1 - Error ....)) sSemFlag - (semaphore operation flag, like SEM_UNDO) Sem_Recover Reset table sema- sSemId - semaphore ID 0 - OK Get the semaphore size Table Sem phore values locked 1Pid - process ID −1 - on error Check each record locking if it is locked, then by one process. This check if it was locked by this process. If YES, function is called to release the lock recover semaphore locking by a run away process, its previous process ID is needed. Sem_Get Get the size of sSemId - semaphore ID 0 - OK Sem Size semaphore set. psSize - pointer to the buffer to save the size −1 - on error Sem_Get Get the semaphore sSemId - (semaphore ID) Output; Table Sem Val value of a table usTableEntryNo - (table entry index) pusVal - entry. pusVal - (pointer to the buffer to save the value) (semaphore value) Return: 0 - OK −1 - Error Sem_Print Print all the sema- sSemId - semaphore ID Return: Sem phore values of a fp - output file pointer 0 - OK semaphore set to a −1 - Error file.

TABLE 2 Switch Controller Common Library Memory Segment APIs API Function Input Possible Returns CM_Create Creates and USMaxNoOf CM_SUCCESS CMSegment initializes the HBEntry - CM_FAIL sc_common maximum number shared memory of HB entries segment, which is composed of OM area and heartbeat table. Creates and initializes sema- phore sets for OM and HB. Pri- marily used by the process manager. DM_Delete Deletes the None CM_SUCCESS CMSegment sc_common CM_FAIL share memory segment and its semaphore sets. CM_Attach Attaches to the None CM_SUCCESS CMSegment sc_common CM_FAIL share memory segment. CM_Detach Detaches from None CM_SUCCESS CMSegment sc_common CM_FAIL segment.

TABLE 3 Operational Measurements Area APIs API Function Input Return CM_SetupOMIPC Setup SC System shared None CM_SUCCESS memory and semaphore loop. CM_FAIL CM_UpdateOMIPC Read share memory and sema- None CM_SUCCESS phore information (ID and size CM_FAIL etc.). CM_PrintOMIPC Print IPC information to a file or FP - (file pointer) CM_SUCCESS stdout. CM_FAIL CM_GetOMAttr Returns one attribute value of Every attribute specification is composed of three CM_SUCCESS OM entry per function call. elements: (1) an attribute constant, (2) an attribute CM_SHM_NOT_ATTACH - share value pointer, and (3) an attribute size pointer. memory segment not exist Attribute constants are as follows: CM_INPUT_ADDR_INVALID CM_OM_ATTR_TERMINATOR (to terminate CM_ATTR_INVALID argument list) CM_INPUT_SIZE_INVALID CM_OM_ATTR_AGENT_TOTAL CM_OM_LOCK_AREA_ERR CM_OM_ATTR_AGENT_DISCONNECT CM_OM_UNLOCK_AREA_ERR CM_OM_ATTR_AGENT_CONNECT CM_OM_ATTR_AGENT_READY CM_OM_ATTR_AGENT_BUSY CM_OM_ATTR_CALL_QUEUED_TOTAL CM_OM_ATTR_PORT_TOTAL CM_OM_ATTR_PORT_CONFERENCE CM_OM_ATTR_PORT_OUT CM_OM_ATTR_PORT_IN CM_OM_ATTR_PORT_HOLD CM_SetOMAttr Set OM data fields. CM_ATTR_MODIFY_MODE_INC CM_SUCCESS CM_ATTR_MODIFY_MODE_DEC CM_SHM_NOT_ATTACH - share CM_ATTR_MODIFY_MODE_CLEAR memory segment not exist CM_ATTR_MODIFY_MODE_SET CM_INPUT_ADDR_INVALID CM_ATTR_INVALID CM_ATTR_MODIFY_MODE_INVALID CM_INPUT_SIZE_INVALID CM_OM_LOCK_AREA_ERR CM_OM_UNLOCK_AREA_ERR

TABLE 4 Heartbeat Table APIs Calling API Function Input Output Return Function CM_GetTime Returns the time since None Current time 00:00:00 GMT, January 1, 1970 measured in mini- seconds. CM_CreateHBTable Create and initialize usMaxNoOfHbEntry- CM_SUCCESS Internal heartbeat table and its maximum no. of entries in CM_FAIL API semaphore set. heartbeat table CM_DeleteHBTable Remove heartbeat share CM_SUCCESS Internal memory segment and its CM_FAIL API semaphore set. CM_AttachHBTable Attach to heartbeat table None CM_SUCCESS Internal segment and its CM_FAIL API semaphore set. CM_DetachHBTable Detach from heartbeat CM_SUCCESS Internal table segment and its CM_FAIL API semaphore set. CM_CreateHBEntry Create a heartbeat entry phHBHandle - heartbeat CM_SUCCESS Process in the heartbeat area. handle pointer CM_SHM_NOT_ATTACH - Manager 1Pid - Process Id. share segment not attached UsInterval - heartbeat CM_HB_TABLE_FULL - interval for that process heartbeat table is full CM_FAIL - locking or unlocking error CM_DeleteHBEntry Delete a heartbeat entry hHBHandle - heartbeat CM_SUCCESS from heartbeat table. handle CM_SHM_NOT_ATTACH - share segment not attached CM_HB_HANDLE_INVALID - handle is not valid CM_FAIL - locking or unlocking error CM_GetHBHandle Returns the heartbeat phHBHandle - heartbeat CM_SUCCESS handle of a registered handle pointer CM_SHM_NOT_ATTACH - process. Ipid - process ID share segment not attached. CM_HB_KEY_INVALID - couldn't find heartbeat table entry for the process CM_FAIL - locking or unlocking error CM_RequestHB Heartbeat state will hHBHandle - process heart- if psInterval is not CM_SUCCESS Process change to request, a beat handle NULL, it will CM_SHM_NOT_ATTACH - Manager request time stamp will pusUnrspCount - where to contain the share segment not attached be filled in the entry. save unresponded count current interval CM_HB_HANDLE_INVALID - The heartbeat unrespond- pusInterval - interval psUnrspCount - handle is not valid ed count and time will be pointer (can be null) unresponded HB CM_FAIL - locking or unlocking updated by this function count error if needed. CM_RespondHB Indicates a heartbeat hHBHandle - process heart- if psInterval is not CM_SUCCESS Respond- respond, a respond beat handle NULL, it will CM_SHM_NOT_ATTACH - ing Pro- time stamp will be pdNextRspTime - where to contain the share segment not attached cess filled unresponded count save next respond time current interval CM_HB_HANDLE_INVALID - and time will be cleared. pusInterval - interval psNextRspTime - handle is not valid pointer (can be null) next respond time CM_FAIL - locking or unlocking error CM_SetHBInterval Set the heartbeat interval hHBHandle - heartbeat CM_SUCCESS Process in the share memory. handle CM_SHM_NOT_ATTACH - Manager usInterval - new heart- share segment not attached beat interval CM_HB_HANDLE_(‘3)INVALID - handle is not valid CM_FAIL - other error CM_GetHBAttr Returns one attribute hHBHandle - to specify the pvAttrValue - the CM_SUCCESS value of heartbeat entry entry attribute value CM_SHM_NOT_ATTACH - per function call. sAttr - to specify the ulAttrSize - the share segment not attached attribute. actual attribute CM_HB_HANDLE_INVALID Possible values are: size CM_INPUT_ADDR_INVALID HB_ATTR_INTERVAL, CM_ATTR_INVALID HB_ATTR_UNRSPCOUNT, CM_INPUT_SIZE_INVALID HB_ATTR_UNRSPTIME pvAttrValue - when the attribute value will be returned ulAttrSize - size of pvAttrValue CM_PrintHBTable Print heartbeat table File pointer to hold the trace None summary and contents. info

TABLE 12 Switch Controller Common Library Table Operational Measurements Area IPC Table (Contains information pertaining to shared memory, queues, and semaphores.) Field ch Name IPC 1 IPC 2 ... IPC n I Key I Id (Identifier) I Size I Create Time

TABLE 13 Switch Controller Common Library Table Operational Measurements Area Switch Controller CPU Availability Field CPU A CPU B ... CPU n I Startup Time us Available CPU (percent) us Waiting CPU (percent) ul Total Memory ul Available Memory st Disk pointer to pointer to pointer to st Disk st Disk st Disk table table table

TABLE 14 Switch Controller Common Library Table Operational Measurements Area Disk Availability Field ch Name Disk 1 Disk 2 . . . Disk n Total Available * 2-8 disks per CPU typical

TABLE 15 Switch Controller Common Library Operational Measurements Area Agent Operational Measurement Counts Field Counts ul Agent Total ul Agent Disconnect ul Agent Connect ul Agent Ready ul Agent Busy

TABLE 16 Switch Controller Common Library Operational Measurements Area Switch Port Operational Measurement Counts for a Switch Controller Field Counts ul Port Total ul Port Conference ul Port Out ul Port In ul Port Hold

TABLE 17 Switch Controller Common Library Control Table For Heartbeat Table Field Value Comments us Max Element max element index in the table us Use Element first element in the used list us Free Element first element in the unused list us Use Counts element count us Stand Alone table is a standalone segment flag

TABLE 18 Switch Controller Common Library Heartbeat Table Field Comments I Pid Process 1 Process 2 . . . Process n Process Identifier s State May be register, request or respond us Interval Heartbeat interval us Half Half of the Interval heartbeat interval d Request Last request Time time stamp us Unrsp Heartbeat Count unrespond counter us Unrsp time Unresponded elapsed time h Prev Handle Previous handle h Next Handle Next handle ch Entry Used Entry used flag

TABLE 19 Agent Library Control Table for Agent Table Field Value Comments us Max Element Max element index in the table us Use Element First element in the used list us Free Element First element in the unused list us Use Counts Element count us Stand Alone Table is a stand alone segment flag st Agent Count Agent count

TABLE 5 Agent Memory Segment APIs API Function Calling Process Input Return Agt_CreateAgentSegment Create and initialize a stand alone share memory Process Manager usMaxClients - max no of client AGT_SUCCEED segment and semaphore sets for agent table, table entries (used to decide the AGT_FAIL group table and assignment table. size of client-agent mapping Read in table records. table size) Agt_DeleteAgentSegment Remove agent share memory segment and its Process Manager AGT_SUCCEED semaphore sets. AGT_FAIL Agt_AttachAgentSegment Attach to agent segment and its semaphore sets. Any process other AGT_SUCCEED than the Process AGT_FAIL Manager Agt_DetachAgentSegment Detach the agent share memory segment. Processes that AGT_SUCCEED attached before AGT_FAIL

TABLE 6 Agent Table APIs API Function Input Output Return Agt_CreateAgentEntry Create an entry into the phAgentHandle - agent handle pointer Search entry created in agent search table. AGT_SUCCESS Agent table. stAgentData - agent info, including TID AGT_SHM_NOT_ATTACH AGT_LOCK_AGENT_TABLE_ERR AGT_UNLOCK_AGENT_TABLE_ERR AGT_AGENT_TABLE_FULL Agt_DeleteAgentEntry Delete an agent entry ITid - TID of agent Search entry deleted. AGT_SUCCESS from agent table. AGT_SHM_NOT_ATTACH AGT_LOCK_AGENT_TABLE_ERR AGT_UNLOCK_AGENT_TABLE_ERR AGT_AGENT_KEY_INVALID AGT_AGENT_HAS_ASSIGNMENT Agt_UpdateAgentState Update an agent's call hClientHandle - client handle of the agent Agent s state field updated. AGT_SUCCESS processing state. ITid - TID of agent pchQueued - can be one of the two values: AGT_SHM_NOT_ATTACH sState - new state, can be one of the AGT_CALL_QUEUED_YES AGT_CLEINT_HANDLE_INVALID following values: AGT_CALL_QUEUED_NO AGT_AGENT_KEY_INVALID AGT_AGENT_STATE_DISCONNECT AGT_LOCK_AGENT_TABLE_ERR AGT_AGENT_STATE_CONNECT AGT_UNLOCK_AGENT_TABLE_ERR AGT_AGENT_STATE_READY AGT_LOCK_GROUP_TABLE_ERR AGT_AGENT_STATE_BUSY AGT_UNLOCK_GROUP_TABLE_ERR pch Queued - if update a state to AGT_AGENT_STATE_INVALID READY, this field will be used to notify the caller whether a call is queued on groups that agent belongs to. Agt_AgentSelect Select an agent which is puchGroupNum - the group to select from AGT_SUCCESS in READY state. sSelectMode - mode of selection: AGT_SHM_NOT_ATTACH AGT_AGENT_SELECT_MODE_FIRST_ AGT_CLEINT_HANDLE_INVALID READY - choose first available agent AGT_AGENT_KEY_INVALID AGT_AGENT_SELECT_MODE_MOST_ AGT_LOCK_AGENT_TABLE_ERR IDLE - choose the most idle agent AGT_UNLOCK_AGENT_TABLE_ERR phClientHandle - address to hold the AGT_LOCK_GROUP_TABLE_ERR agent's handle AGT_UNLOCK_GROUP_TABLE_ERR pstAgentData - address to hold the agent's AGT_NO_AGENT_AVAILABLE data AGT_NO_AGENT_ASSIGNED AGT_NO_AGENT_LOGIN AGT_GROUP_KEY_INVALID AGT_AGENT_SELECT_MODE_INVALID AGT_INPUT_ADDRESS_NULL Agt_AgentDNToTid Agent destination number puchAgentDestNum - agent DN pITid - TID of the agent with that DN AGT_SUCCESS to TID conversion API. pITid where to save TID phClientHandle - client handle AGT_SHM_NOT_ATTACH phClientHandle - where to save client AGT_AGENT_DN_INVALID handle AGT_LOCK_AGENT_TABLE_ERR AGT_UNLOCK_AGENT_TABLE_ERR Agt_GetAgentData Get an agent's detail (Choose either hClientHandle or ITid to stAgentData - returned agent data AGT_SUCCESS data. as input to identify the agent) AGT_SHM_NOT_ATTACH hClientHandle - client handle of agent AGT_CLIENT_HANDLE_INVALID ITid - TID of agent AGT_AGENT_KEY_INVALID stAgentData - agent data AGT_LOCK_AGENT_TABLE_ERR AGT_UNLOCK_AGENT_TABLE_ERR AGT_LOCK_AGENT_REC_ERR AGT_UNLOCK_AGENT_REC_ERR AGT_INPUT_ADDR_INVALID Agt_SetAgentData Update an agent's (Choose either hClientHandle or 1Tid to agent's stAgentData field updated AGT_SUCCESS stAgentData field. as input to identify the agent) AGT_SHM-NOT-ATTACH hClientHandle - client handle of agent AGT_CLIENT-HANDLE_INVALID 1Tid - TID of agent AGT_AGENT_KEY_INVALID stAgentData - agent data AGT_LOCK_AGENT_TABLE_ERR AGT_UNLOCK_AGENT_TABLE_ERR AGT_LOCK_AGENT_REC_ERR AGT_UNLOCK_AGENT_REC_ERR AGT_INPUT_ADDR_INVALID Agt_GetAgentAttr Get only one field of (Choose either hClientHandle or 1Tid to pvAttrValue - attribute value AGT_SUCCESS stAgentData per function as input to identify the agent) ulAttrSize - the actual attribute size AGT_SHM_NOT_ATTACH call. hClientHandle - client handle of agent AGT_CLIENT_HANDLE_INVALID 1Tid - TID of agent AGT_AGENT_KEY_INVALID sAttr - to specify attribute. Possible AGT_LOCK_AGENT_TABLE_ERR values are. AGT_UNLOCK_AGENT_TABLE_ERR AGT_ATTR-AGENT-STATE AGT_INPUT_ADDR_INVALID AGT_ATTR_AGENT_DN AGT_INPUT_SIZE_INVALID pvAttrValue - where the attribute AGT_AGENT_ATTR_INVALID value will be returned ulAttrSize - size of pvAttrValue. Agt_SetAgentAttr Set only one field of (Choose either hClientHandle or 1Tid as PvAttrValue - the attribute value AGT_SUCCESS stAgentData per function input to identify the agent. AGT_SHM_NOT_ATTACH call. hClientHandle - client handle of agent AGT_CLIENT_HANDLE_INVALID 1Tid - Tid of agent AGT_AGENT_KEY_INVALID sAttr - to specify attribute. Possible AGT_LOCK_AGENT_TABLE_ERR value are; AGT_UNLOCK_AGENT_REC_ERR AGT_ATTR_AGENT_STATE AGT_LOCK_AGENT_REC_ERR AGT_ATTR_AGENT_DN AGT_UNLOCK_AGENT_REC_ERR AGT_ATTR_AGENT_CATEGORY AGT_INPUT_ADDR_INVALID pvAttrValue - where the attribute value AGT_INPUT_SIZE_INVALID will be returned AGT_INVALID_AGENT_ATTR ulAttrSize - size of pvAttrValue. Agt_GetAgentHandle Locate an agent by its 1Tid - TID AGT_SUCCESS TID. phAgentHandle - where to save agent AGT_SHM_NOT_ATTACH handle AGT_AGENT_KEY_INVALID AGT_LOCK_AGENT_TABLE_ERR AGT_UNLOCK_AGENT_TABLE_ERR Agt_GetAgentCounts Gets the number of pstAgentCount - address to save the agent AGT_SUCCESS agents in the agent table. count information AGT_SHM_NOT_ATTACH AGT_INPUT_ADDR_INVALID AGT_LOCK_AGENT_TABLE_ERR AGT_UNLOCK_AGENT_TABLE_ERR Agt_PrintAgentTable Print agent table fp - file pointer to hold the trace info. None summary and contents. Agt_PrintAgentEntry Print the contents of one (Choose either hClientHandle or 1Tid to AGT_SUCCESS agent table entry. as input to identify the agent) AGT_SHM_NOT_ATTACH hClientHandle - client handle of agent AGT_AGENT_KEY_INVALID 1Tid - TID of agent AGT_CLIENT_HANDLE_INVALID Agt_PrintAgentSearchTable Print agent search table fp - file pointer to hold the trace info. None contents.

TABLE 7 Group Table APIs API Function Input Output Return Agt_CreateGroupEntry Add an entry into phGroupHandle - group Search table AGT_SUCCESS the Group table. handle pointer stGroupData - entry is AGT_SHM_NOT_ATTACH group data including group created. AGT_LOCK_GROUP_TABLE_ERR number(key) AGT_UNLOCK_GROUP_TABLE_ERR AGT_GROUP_TABLE_FULL Agt_DeleteGroupEntry Delete a group entry puchGroupNum - group Ssearch table AGT_SUCCESS from group table. number of the group entry AGT_SHM_NOT_ATTACH deleted. AGT_LOCK_GROUP_TABLE_ERR AGT_UNLOCK_GROUP_TABLE_ERR AGT_GROUP_KEY_INVALID AGT_GROUP_HAS_ASSIGNMENT Agt_GetGroupHandle Locate a group by phGroupHandle - group AGT_SUCCESS its group number. handle pointer AGT_SHM_NOT_ATTACH puchGroupNum - AGT_LOCK_GROUP_TABLE_ERR group number AGT_UNLOCK_GROUP_TABLE_ERR AGT_GROUP_KEY_INVALID Agt_GetGroupData Get an group's puchGroupNum - group AGT_SUCCESS detail data. number of the group AGT_SHM_NOT_ATTACH pstGroupData - group data AGT_LOCK_GROUP_TABLE_ERR storage pointer AGT_UNLOCK_GROUP_TABLE_ERR AGT_GROUP_KEY_INVALID AGT_INPUT_ADDR_INVALID AGT_LOCK_GROUP_REC_ERR AGT_UNLOCK_GROUP_REC_ERR Agt_SetGroupData Update a group's puchGroupNum - group AGT_SUCCESS stGroupData field. number of the group AGT_SHM_NOT_ATTACH stGroupData - new group data AGT_LOCK_GROUP_TABLE _ERR AGT_UNLOCK_GROUP_TABLE_ERR AGT_GROUP_KEY_INVALID AGT_INPUT_ADDR_INVALID AGT_LOCK_GROUP_REC_ERR AGT_UNLOCK_GROUP_REC_ERR Agt_IncreaseCallsQueuedOnGroup Increase number of puchGroupNum - group AGT_SUCCESS calls queued for a number AGT_SHM_NOT_ATTACH group. AGT_LOCK_GROUP_TABLE_ERR AGT_UNLOCK_GROUP_TABLE_ERR AGT_GROUP_KEY_INVALID Agt_DecreaseCallsQueuedonGroup Decrease number of puchGroupNum - group AGT_SUCCESS calls queued for a number AGT_SHM_NOT_ATTACH group. AGT_LOCK_GROUP_TABLE_ERR AGT_UNLOCK_GROUP_TABLE_ERR AGT_GROUP_KEY_INVALID Agt_GetGroupCount Gets the number of pusCount - count address AGT_SUCCESS groups in the group AGT_SHM_NOT_ATTACH table. AGT_INPUT_ADDR_INVALID Agt_PrintGroupTable Print group table fp - file pointer to hold None summary and the trace info. contents. Agt_PrintGroupEntry Print the content of puchGroupNum - group one group number of the group table entry. fp - file pointer to hold the information Agt_PrintGroupSearchTable Print group search fp - file pointer None table contents. to hold the trace info.

TABLE 8 Assignment Table APIs API Function Input Return Agt_CreateAssignEntry Add entry into phAssignHandle - assign handle pointer AGT_SUCCESS the Assign table. 1Tid - TID of agent AGT_SHM_NOT_ATTACH uchGroupNum - group number of group AGT_AGENT_KEY_INVALID stAssignData - other assignment AGT_GROUP_KEY_INVALID related info AGT_LOCK_AGENT_TABLE_ERR AGT_UNLOCK_AGENT_TABLE_ERR AGT_LOCK_GROUP_TABLE_ERR AGT_UNLOCK_GROUP_TABLE_ERR AGT_LOCK_ASSIGN_TABLE_ERR AGT_UNLOCK_ASSIGN_TABLE_ERR AGT_LOCK_AGENT_REC_ERR AGT_UNLOCK_AGENT_REC_ERR AGT_ASSIGN_TABLE_FULL Agt_DeleteAssignEntryByKeys Delete an assign entry 1Tid - TID of agent AGT_SUCCESS from assign table. puchGroupNum - group number AGT_SRM_NOT_ATTACH of group AGT_AGENT_KEY_INVALID AGT_GROUP_KEY_INVALID AGT_LOCK_AGENT_TABLE_ERR AGT_UNLOCK_AGENT_TABLE_ERR AGT_LOCK_GROUP_TABLE_ERR AGT_UNLOCK_GROUP_TABLE_ERR AGT_LOCK_ASSIGN_TABLE_ERR AGT_UNLOCK_ASSIGN_TABLE_ERR AGT_LOCK_AGENT_REC_ERR AGT_UNLOCK_AGENT_REC_ERR Agt_DeleteAgentAssign Delete all of one agent's hClientHandle - client handle of the AGT_SUCCESS assignment entries. agent 1Tid - TID of agent AGT_SHM_NOT_ATTACH AGT_AGENT_KEY_INVALID AGT_GROUP_KEY_INVALID AGT_LOCK_AGENT_TABLE_ERR AGT_UNLOCK_AGENT_TABLE_ERR AGT_LOCK_GROUP_TABLE_ERR AGT_UNLOCK_GROUP_TABLE_ERR AGT_LOCK_ASSIGN_TABLE_ERR AGT_UNLOCK_ASSIGN_TABLE_ERR AGT_LOCK_AGENT_REC_ERR AGT_UNLOCK_AGENT_REC_ERR Agt_DeleteGroupAssign Delete all of one group's puchGroupHandle - group number of AGT_SUCCESS assignment entries. the group AGT_SHM_NOT_ATTACH AGT_AGENT_KEY_INVALID AGT_GROUP_KEY_INVALID AGT_LOCK_AGENT_TABLE_ERR AGT_UNLOCK_AGENT_TABLE_ERR AGT_LOCK_GROUP_TABLE_ERR AGT_UNLOCK_GROUP_TABLE_ERR AGT_LOCK_ASSIGN_TABLE_ERR AGT_UNLOCK_ASSIGN_TABLE_ERR AGT_LOCK_AGENT_REC_ERR AGT_UNLOCK_AGENT_REC_ERR Agt_GetAssignByKeys Locate an assignment by its 1Tid - agent TID AGT_SUCCESS TID and GroupNum. puchGroupNum - group number AGT_SHM_NOT_ATTACH AGT_AGENT_KEY_INVALID AGT_GROUP_KEY_INVALID AGT_LOCK_AGENT_TABLE_ERR AGT_UNLOCK_AGENT_TABLE_ERR AGT_LOCK_GROUP_TABLE_ERR AGT_UNLOCK_GROUP_TABLE_ERR AGT_LOCK_ASSIGN_TABLE_ERR AGT_UNLOCK_ASSIGN_TABLE_ERR AGT_LOCK_AGENT_REC_ERR AGT_UNLOCK_AGENT_REC_ERR AGT_ASSIGN_NO_MATCH Agt_GetAssignCount Gets the number of assigns pusCount - total assignments AGT_SUCCESS in the assign table. AGT_SHM_NOT_ATTACH Agt_GetAgentAssignCount Gets the number of hClientHandle - client handle of an AGT_SUCCESS assignments for a agent 1Tid - TID of an agent AGT_SHM_NOT_ATTACH particular agent. pusCount - address to put count AGT_AGENT_KEY_INVALID AGT_CLIENT_HANDLE_INVALID AGT_LOCK_AGENT_TABLE_ERR AGT_UNLOCK_AGENT_TABLE_ERR AGT_LOCK_ASSIGN_TABLE_ERR AGT_UNLOCK_ASSIGN_TABLE_ERR Agt_GetGroupAssignCount Gets the number of agents puchGroupNum - group number of AGT_SUCCESS that assigned to a the group AGT_SHM_NOT_ATTACH specified group. pusCount where to save count AGT_GROUP_KEY_INVALID AGT_LOCK_GROUP_TABLE_ERR AGT_UNLOCK_GROUP_TABLE_ERR AGT_LOCK_ASSIGN_TABLE_ERR AGT_UNLOCK_ASSIGN_TABLE_ERR Agt_PrintAssignTable Print assignment table fp - file pointer to hold the trace info. None summary and contents.

TABLE 20 Agent Library Agent Table Field Comments st Agent Data Agent data substructure h Assigned Assigned groups h Client Handle Client handle h Prev Handle Previous agent handle h Next Handle Next agent handle ch Entry Used Entry used flag

Agent Library Agent Attributes Table Field Comments I Tid Agent Agent . . . Agent Agent terminal Tid 1 Tid 2 Tid n identifier st Agent DN Agent destination number uch Agent Logon ID Agent logon identifier st Agent Attr Agent attribute structure st Last Logoff Cause Last logoff reason s State Agent state

TABLE 22 Agent Library Agent Time Stamps Table Agent Agent Agent Field Tid 1 Tid 2 . . . Tid n Comments I Last Connect Time Last logon time I Last Ready Time Last become ready time I Last Busy Time Last become busy time I Last Disconnect Last log out time Time

TABLE 23 Agent Library Agent Count Table Field Value Comments us Total Total Agent Entries us Disconnect Total Agents in Disconnect State us Connect Total Agents in Connect State us Ready Total Agents in Ready State us Busy Total Agents in Busy State

TABLE 24 Agent Library Control Table for Group Table Field Value Comments us Max Element Max element index in the table us Use Element First element in the used list us Free Element First element in the unused list us Use Counts Element count us Stand Alone Table is a stand alone segment flag us Calls Queued Total number of calls queued

TABLE 25 Agent Library Group Table Field Comments st Group Data Agent Agent . . . Agent Group information Group 1 Group 2 Group n h Assigned Agents belonging to this group h Prev Handle Previous group handle h Next Handle Next group handle ch Entry Used Entry used flag

TABLE 26 Agent Library Calls Queued Per Group Field Comments uch Group Num Agent Agent ... Agent Group identifier Group 1 Group 2 Group n st Agent Count Number of agents in this group us Called Queued Number of calls queued in this group

TABLE 27 Agent Library Control Assignment Table Field Value Comments us Max Element Max element index in the table us Use Element First element in the used list us Free Element First element in the unused list us Use Counts Element count us Stand Alone Table is a standalone segment flag

TABLE 28 Agent Library Assignment Table Agent Agent Group Group Agent Field 1 2 . . . Group n Comments st Assign Data Assignment data field h Agent Prev Agents previous Handle assignment h Agent Next Agents next Handle assignment h Group Prev Group's previous Handle assignment h Group Next Group's next Handle assignment h Prev Handle Previous assignment handle h Next Handle Next assignment handle ch Entry Used Entry used flag

TABLE 29 Agent Library Assignment Data Table Field Comments h Agent Agent Agent . . . Agent Agent table handle Handle Handle 1 Handle 2 Handle n h Group Group table handle Handle

TABLE 30 Agent Library Mapping Table Field Comments I Tid Agent Agent . . . Agent Terminal identifier Tid 1 Tid 2 Tid n h Agent Handle Agent table handle ch Entry Used Entry used flag

TABLE 31 Agent Library Fast Search for Agent Table Field Comments I Tid Agent Agent . . . Agent Agent terminal Tid 1 Tid 2 Tid n identifier h Agent Handle Agent table handle

TABLE 32 Agent Library Group Search Table Field Comments uchGroupNum Group Number h GroupHandle Group Group . . . Group Group Handle Handle 1 Handle 2 Handle n

TABLE 33 Call Data Block Library Call Data Block Table Field Comments I Cid Call ID Call ID . . . Call ID n Call identifier 1 2 st ANI Calling number st DN Called number st O Leg Leg 1 Originating leg st T Leg Leg 2 Leg n Terminating leg st TP Time points

Call Data Block APIs API Function Input Output Return cdb_CreateCDBTable Create and initialize usMaxNoOfCDBEntry -- maximum number of CDB_SUCCESS or CDB_FAIL a share memory entries in CDB table segment for CDB table. Create and initialize a semaphore set to control the access. cdb_DeteteCDBTable Delete CDB share None CDB_SUCCESS or CDB_FAIL memory segment and its semaphore. cdb_AttachCDBTable Attach to existing None CDB_SUCCESS or CDB_FAIL CDB table segment and its semaphore set. cdb_DetachCDBTable Detach from the CDB None CDB_SUCCESS or CDB_FAIL share memory segment. cdb_CreateCDBEntry Create a CDB table stCDBData -- CDB detail information plCid -- newly CDB_SUCCESS entry. plCid -- where the returned CID should be created CID CDB_SHM_NOT_ATTACH phCDBHandle -- where the returned phCDBHandle CDB_TABLE_FULL CDBHandle should be(can be NULL) newly created CDB_LOCK_TABLE_ERR handle CDB_UNLOCK_TABLE_ERR cdb_DeleteCDBEntry Delete a CDB entry. 1Cid - call ID CDB_SUCCESS CDB_SHM_NOT_ATTACH CDB_KEY_INVALID CDB_LOCK_TABLE_ERR CDB_UNLOCK_TABLE_ERR cdb_SWPortToCid Search CID by port stPort - which composed of span and channel ID CDB_SUCCESS identifiers. plCid - where the return CID should be saved CDB_SHM_NOT_ATTACH CDB_PORT_INVALID CDB_LOCK_TABLE_ERR CDB_UNLOCK_TABLE_ERR cdb_GetCDBData Get an CDB's 1Cid -- Call ID pstCDBData -- CDB_SUCCESS detail data. pstCDBData -- where return CDB data should CDB data CDB_SHM_NOT_ATTACH be saved CDB_KEY_INVALID CDB_INPUT_ADDR_INVALID CDB_LOCK_REC_ERR CDB_UNLOCK_REC_ERR cdb_SetCDBData Set a CDB's 1Cid -- Call ID CDB_SUCCESS detail data. stCDBData -- CDB data CDB_SHM_NOT_ATTACH CDB_KEY_INVALID CDB_LOCK_REC_ERR CDB_UNLOCK_REC_ERR cdb_PrintCDBData Print CDB detail data. stCDBData -- CDB data record None fp -- output file pointer cdb_GetCDBAttr Returns attribute 1Cid - Call ID Return attribute CDB_SUCCESS values each attribute specification is composed of three values and CDB_SHM_NOT_ATTACH elements: actual attribute CDB_KEY_INVALID attribute constants, which are of following: size CDB_INPUT_ADDR_INVALID CDB_ATTR_ANI CDB_INPUT_SIZE_INVALID CDB_ATTR_DN CDB_ATTR_INVALID CDB_ATTR_OLEG_PORT CDB_ATTR_OLEG_STATE_MACHINE_ID CDB_ATTR_OLEG_STATE CDB_ATTR_OLEG_EVENT CDB_ATTR_OLEG_CONF_PORT CDB_ATTR_TLEG_PORT CDB_ATTR_TLEG_STATE_MACHINE_ID CDB_ATTR_TLEG_STATE CDB_ATTR_TLEG_EVENT CDB_ATTR_TLEG_CONF_PORT CDB_ATTR_TP_1 CDB_ATTR_TP_4 CDB_ATTR_TP_5 CDB_ATTR_TP_6 CDB_ATTR_TP_7 attribute return value address size of allocated attribute return value Use CDB_ATTR_TERMINATOR as the last argument

TABLE 9 API Function Input Output Return cdb_SetCDBAttr Sets attribute 1Cid -- Call ID CDB_SUCCESS values. each attribute specification is composed of CDB_SHM_NOT_ATTACH four elements: CDB_KEY_INVALID attribute constants, which are the same as CDB_INPUT_ADDR_INVALID those provided above for function CDB_ATTR_INVALID cdb_GetCDBAttr CDB_ATTR_MODIFY_MODE_INVALID * attribute modify mode: CDB_LOCK_REC_ERR CDB_ATTR_MODIFY_MODE_CLEAR CDB_UNLOCK_REC_ERR CDB_ATTR_MODIFY_MODE_INC CDB_ATTR_MODIFY_MODE_DEC CDB_ATTR_MODIFY_MODE_SET attribute value address size of attribute value Use CDB_ATTR_TERMINATOR as the last argument. cdb_GetCDBCount Gets the number pusCount -- where the count information pusCount -- CDB_SUCCESS of CDB entries in should be saved number of CDB_SHM_NOT_ATTACH the table. entries CDB_INPUT_ADDR_INVALID cdb_PrintCDBTable Print CDB table fp -- output file pointer None summary and contents. cdb_PrintCDBEntry Print content of 1Cid -- Call ID CDB_SUCCESS one CDB table fp -- output file pointer CDB_SHM_NOT_ATTACH entry. CDB_KEY_INVALID

TABLE 34 Call Data Block Library Leg Data Table Field Leg 1 Leg 2 . . . Leg n Comments st Port Switch port associated with leg. us State Machine State machine identifier. Id us State State of leg. us Event Event occurring on leg. us Conf Port Conference port.

TABLE 35 Call Data Block Library Port Table Field Comments s Span ID Span identifier s Channel ID Channel Channel . . . Channel Channel identifier 1 2 n

TABLE 36 Call Data Block Library Time Points Call Call Call Field ID 1 ID 2 . . . ID n Comments ul TP1 Time point 1 which is the time the switch controller detects an incoming call. ul TP4 Time point 4 which is the time a call is offered to an agent position. ul TP5 Time point 5 which is the time the agent port is done with a call. ul TP6 Time point 6 which is the time at which the switch controller detects answer supervision from the terminating end. ul TP7 Time point 7 which is the time at which controller detects reorigination DTMF sequence, originator disconnect, CSH timer expiration indicating terminator disconnect, or call park timer expiration (whichever occurs first). At time point 7, the switch controller may send time points to the billing system.

TABLE 10 Service Logic Program Table APIs API Function Input Output Return slp_CreateSLPTable Create and initialize a usMaxNoOfSLPEntry -- maximum SLP_SUCCESS or SLP_FAIL share memory segment number of entries in SLP table for SLP table. slp_DeleteSLPTable Delete SLP share None SLP_SUCCESS or SLP_FAIL memory segment. slp_AttachSLPTable Attach to existing SLP None SLP_SUCCESS or SLP_FAIL table segment. slp_DetachSLPTable Detach from the SLP None SLP_SUCCESS or SLP_FAIL share memory segment. slp_CreateSLPEntry Create a SLP table entry. stSLPData -- SLP detail information phSLPHandle -- SLP_SUCCESS pbSLPHandle -- where the returned newly created SLP_SHM_NOT_ATTACH SLPHandle should be (can be NULL) handle SLP_TABLE_FULL slp_DeleteSLPEntry Delete a SLP entry. 1Cid -- Call ID SLP_SUCCESS SLP_SHM_NOT_ATTACH SLP_KEY_INVALID slp_GetSLPData Get an SLP's detail data. 1Cid -- Call ID pstSLPData -- SLP_SUCCESS pstSLPData -- where return SLP data SLP data SLP_SHM_NOT_ATTACH should be saved SLP_KEY_INVALID SLP_INPUT_ADDR_INVALID slp_SetSLPData Set an SLP's detail data. 1Cid -- Call ID SLP_SUCCESS stSLPData -- SLP data SLP_SHM_NOT_ATTACH SLP_KEY_INVALID slp_PrintSLPData Print SLP detail data. stSLPData -- SLP data record None fp -- output file pointer slp_GetSLPAttr Returns attribute values. 1Cid -- Call ID Return attribute SLP_SUCCESS each attribute specification is values and actual SLP_SHM_NOT_ATTACH composed of three elements: attribute attribute size SLP_KEY_INVALID constants, which are of followings: SLP_INPUT_ADDR_INVALID SLP_ATTR_FEATURE SLP_INPUT_SIZE_INVALID SLP_ATTR_FEATURE_STATE SLP_ATTR_INVALID SLP_ATTR_LEG_FEATURE SLP_ATTR_EXPECTED_EVENT SLP_ATTR_RELATE_CID_1 SLP_ATTR_RELATE_CID_2 SLP_ATTR_RELATE_CID_3 SLP_ATTR_RELATE_CID_4 SLP_ATTR_RELATE_CID_5 SLP_ATTR_RELATE_CID_6 SLP_ATTR_RELATE_CID_7 SLP_ATTR_RELATE_CID_8 SLP_ATTR_RELATE_CID_9 attribute return value address size of allocated attribute return value Use SLP_ATTR_TERMINATOR as the last argument slp_SetSLPAttr Sets attribute values. 1Cid -- Call ID SLP_SUCCESS each attribute specification is SLP_SHM_NOT_ATTACH composed of four elements: attribute SLP_KEY_INVALID constants, which are of followings: SLP_INPUT_ADDR_INVALID SLP_ATTR_MODIFY_MODE_CLEAR SLP_ATTR_INVALID SLP_ATTR_MODIFY_MODE_INC SLP_ATTR_MODIFY_MODE_DEC SLP_ATTR_MODIFY_MODE_SET attribute value address size of attribute value Use SLP_ATTR_TERMINATOR as the last argument slp_GetCidByTid Search CID by TID. 1Tid -- TID of agent SLP_SUCCESS plCid -- where return CID should be saved SLP_SHM_NOT_ATTACH SLP_INPUT_ADDR_INVALID SLP_TID_INVALID slp_GetSLPCount Gets the number of SLP pusCount -- where the count information pusCount -- SLP_SUCCESS entries in the table. should be saved number of entries SLP_SHM_NOT_ATTACH SLP_INPUT_ADDR_INVALID slp_PrintSLPTable Print SLP table summary fp -- output file pointer None and contents. slp_PrintSLPEntry Print content of one SLP 1Cid -- Call ID SLP_SUCCESS table entry. fp -- output file pointer SLP_SHM_NOT_ATTACH SLP_KEY_INVALID

TABLE 37 Service Logic Program Library Service Logic Program Table Field Comments 1 Cid Call identifier 1 Tid Agent terminal identifier s Feature Feature of the call s Feature State State of the feature s Leg Feature Feature of the leg s Expected Event Expected event 1 Relate Cid 1 Related Call ID 1 1 Relate Cid 2 Related Call ID 2 1 Relate Cid 3 Related Call ID 3 1 Relate Cid 4 Related Call ID 4 1 Relate Cid 5 Related Call ID 5 1 Relate Cid 6 Related Call ID 6 1 Relate Cid 7 Related Call ID 7 1 Relate Cid 8 Related Call ID 8 1 Relate Cid 9 Related Call ID 9

TABLE 11 Switch APIs API Function Input Return SW_CreateSWSegment Create share memory segment for stSWSize -- define the maximum number of entries SW_SUCCESS switch resource tables, organize and for node table, conference table, span table and trunk SW_FAIL initialize individual tables and create group tables semaphores for them. Caller: PROC_MAN. SW_DeleteSWSegment Delete share memory segment for None SW_SUCCESS switch resource tables, remove SW_FAIL semaphores. Caller: PROC_MAN. SW_AttachSWSegment Attach to switch resource table share None SW_SUCCESS memory segment and semaphores. SW_FAIL SW_DetachSWSegment Detach from switch resource table SW_SUCCESS share memory. SW_FAIL SW_AddNode Add a node entry into switch node stNode -- contains node information, such as logical SW_SUCCESS table. node ID, node serial number etc. SW_SHM_NOT_ATTACH SW_NODE_ID_INVALID SW_NODE_ID_INUSE SW_RemoveNode Remove an existing node from switch usNodeID -- logical node ID SW_SUCCESS node table. SW_SHM_NOT_ATTACH SW_NODE_ID_INVALID SW_GetNodeID Get logical node ID by switch node 1PhysicalID -- switch node serial number Output: pusNodeID -- logical node ID if function serial number. pusNodeID -- where to deposit the logical node ID returns SW SUCCESS Return: SW_SHM_NOT_ATTACH SW_SUCCESS SW_KEY_INVALID SW_INPUT_ADDR_INVALID SW_GetNodeData Get node information. usNodeID -- logical node ID SW_SUCCESS pstNodeData -- where to deposit node information SW_SHM_NOT_ATTACH SW_NODE_ID_INVALID SW_INPUT_ADDR_INVALID SW_SetNodeData Set node information. usNodeID -- logical node ID SW_SUCCESS stNodeData -- node data SW_SHM_NOT_ATTACH SW_NODE_ID_INVALID SW_PrintNodeData Print node data to file. fp -- file pointer None stNodeData -- node data SW_GetNodeAttr Get attribute(field) values of the usNodeID -- logical node ID SW_SUCCESS specified node. every attribute specification is composed of three SW_SHM_NOT_ATTACH elements: SW_NODE_ID_INVALID attribute constant - specify which attribute, can be: SW_ATTR_INVALID SW_NODE_ATTR_PHYSICAL_ID SW_INPUT_ADDR_INVALID SW_NODE_ATTR_HOST_NODE_ID SW_INPUT_SIZE_INVALID SW_NODE_ATTR_SW_TYPE SW_NODE_ATTR_MAX_SLOT SW_NODE_ATTR_STATUS SW_NODE_ATTR_TERMINATOR (to terminate the argument list) attribute value pointer - where to deposit the attribute value attribute size pointer - the size caller allocated, after function call, the value is the actual size of the attribute value Note: This is a variable length argument function, use SW_NODE_ATTR_TERMINATOR as the last argument. SW_SetNodeAttr Change attribute values of the Similar as SW_GetNodeAttr(. . .) SW_SUCCESS specified node. SW_SHM_NOT_ATTACH SW_NODE_ID_INVALID SW_ATTR_INVALID SW_INPUT_ADDR_INVALID SW_INPUT SIZE_INVALID SW_GetNodeCount Get number of existing switch nodes pusCount -- where to deposit the number of nodes SW_SUCCESS in the system. SW_SHM_NOT_ATTACH SW_INPUT_ADDR_INVALID SW_PrintNodeTable Print node table summary. fp - file pointer of the output file None SW_PrintNodeEntry Print one node data to an output file fp - file pointer SW_SUCCESS (or standard output). usNodeID - logical node ID SW_SHM_NOT_ATTACH SW_NODE_ID_INVALID SW_GetSlotMap Get slot map (slot to card mapping) of usNodeID -- logical node ID Output: pusSlotMax - actual maximum number of specified node. pusSlotMax - number of slots caller allocates slots on that switch node pstSlots - where to deposit slot map Return: SW_SUCCESS SW_SHM_NOT_ATTACH SW_INPUT_ADDR_INVALID SW_NODE_ID_INVALID SW_PrintSlotMap Print slot map to a file or standard fp -- file pointer None output. usSlotMax -- number of slots pstSlots -- slot map information SW_AddCard Add a card to a node. usNodeID -- logical node ID SW_SUCCESS usSlotNo -- slot number of the card SW_SHM_NOT_ATTACH eCardType -- card type SW_NODE_ID_INVALID pvCard -- detail card structure, varies depends on SW_SLOT_NO_INVALID card type SW_SLOT_NO_INUSE SW_TABLE_FULL SW_CARD_TYPE_INVALID SW_INPUT_ADDR_INVALID SW_RemoveCard Remove a card from the node. usNodeID -- logical node ID SW_SUCCESS usSlotNo -- slot number of the card SW_SHM_NOT_ATTACH SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_GetCard Get card structure (information). usNodeID - logical node ID SW_SUCCESS usSlotNo -- slot number SW_SHM_NOT_ATTACH peCardType -- return card type SW_NODE_ID_INVALID pvCard -- return detail card structure SW_SLOT_NO_INVALID SW_INPUT_ADDR_INVALID Note: declare a CardUnion variable, if card type is not known to the caller. Use the pointer to that CardUnion as pvCard argument SW_GetCardSlot Get slot no of a card by its serial sSerialNumber -- card serial number SW_SUCCESS number. pusNodeID -- return logical node ID SW_SHM_NOT_ATTACH pustSlotNo -- return slot no of the card SW_KEY_INVALID pstSlotData -- return general card information SW_INPUT_ADDR_INVALID SW_GetCardAttr Get attribute values of card. usNodeID -- node ID SW_SUCCESS usSlotNo - slot no SW_SHM_NOT_ATTACH sAttr -- attribute constant SW_NODE_ID_INVALID pvAttrVal - attribute value SW_SLOT_NO_INVALID SW_ATTR_INVALID SW_INPUT_ADDR_INVALID SW_CARD_TYPE_INVALID SW_SetCardAttr Set attribute value of a card. usNodeID -- node ID SW_SUCCESS usSlotNo -- slot no SW_SHM_NOT_ATTACH sAttr -- attribute constant SW_NODE_ID_INVALID pvAttrVal -- attribute value SW_SLOT_NO_INVALID SW_ATTR_INVALID SW_INPUT_ADDR_INVALID SW_CARD_TYPE_INVALID SW_AddStack Add a SS7 stack. usNodeID -- logical node ID SW_SUCCESS usSlotNo -- slot no of the SS7 card SW_NODE_ID_INVALID stStack -- stack info SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_STACK_ID_INVALID SW_STACK_ID_INUSE SW_RemoveStack Remove a SS7 stack. usNodeID -- logical node ID SW_SUCCESS usSlotNo -- slot no of the SS7 card SW_SHM_NOT_ATTACH usStackID -- stack ID SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_STACK_ID_INVALID SW_AddLinkSet Add a SS7 linkeset. usNodeID -- logical node ID SW_SUCCESS usSlotNo -- slot no of the SS7 card SW_SHM_NOT_ATTACH stLinkeSet -- linkset info. SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_LINKSET_ID_INVALID SW_LINKSET_ID_INUSE SW_RemoveLinkSet Remove a SS7 linkeset. usNodeID -- logical node ID SW_SUCCESS usSlotNo -- slot no of the SS7 card SW_SHM_NOT_ATTACH stLinksetID -- linkset ID SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_LINKSET_ID_INVALID SW_AddLink Add a link. usNodeID -- logical node ID SW_SUCCESS usSlotNo -- slot no of the SS7 card SW_SHM_NOT_ATTACH stLink - link info. SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_LINK_ID_INVALID SW_LINK_ID_INUSE SW_RemoveLink Remove a link. usNodeID -- logical node ID SW_SUCCESS usSlotNo -- slot no of the SS7 card SW_SHM_NOT_ATTACH usLinkID -- link ID SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_LINK_ID_INVALID SW_GetLink Get SS7 link ID of a specified usSpanID -- logical span ID SW_SUCCESS channel. usChannelID -- channel ID SW_SHM_NOT_ATTACH pusNodeID - return logical node ID SW_INPUT_ADDR_INVALID pusSlotNo - return slot no SW_KEY_INVALID pusLinkID - return SS7 link ID SW_RemoveLink2 Remove a SS7 link. usSpanID -- logical span ID SW_SUCCESS usChannelID -- channel ID SW_SHM_NOT_ATTACH SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_LINK_ID_INVALID SW_AddDest Add SS7 destination. usNodeID -- logical node ID SW_SUCCESS usSlotID -- slot no of the SS7 card SW_SHM_NOT_ATTACH stDest -- destination info. SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_DEST_ID_INVALID SW_DEST_ID_INUSE SW_RemoveDest Remove a destination. usNodeID -- logical node ID SW_SUCCESS usSlotNo -- slot no of the SS7 card SW_SHM_NOT_ATTACH usDestID -- destination ID SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_DEST_ID_INVALID SW_GetDest Get destination ID of a specified DPC. usNodeID -- logical node ID SW_SUCCESS usSlotNo -- slot no of the SS7 card SW_SHM_NOT_ATTACH ulDPC -- destination point code SW_NODE_ID_INVALID pustDestID -- return destination ID SW_SLOT_NO_INVALID SW_KEY_INVALID SW_INPUT_ADDR_INVALID SW_RemoveDest2 Remove destination. usNodeID -- logical node ID SW_SUCCESS usSlotNo -- slot no of the SS7 card SW_SHM_NOT_ATTACH ulDPC -- destination point code SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_DEST_ID_INVALID SW_AddRoute Add a SS7 route. usNodeID - logical node ID SW_SUCCESS usSlotNo - slot no of the SS7 card SW_SHM_NOT_ATTACH stRoute - route info. SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_ROUTE_ID_INVALID SW_ROUTE_ID_INUSE SW_RemoveRoute Remove a SS7 route. usNodeID -- logical node ID SW_SUCCESS usSlotNo -- slot no of the SS7 card SW_SHM_NOT_ATTACH usRouteID -- route ID SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_ROUTE_ID_INVALID SW_AddSimm Add a simm to a MFDSP card. usNodeID - logical node ID SW_SUCCESS usSlotNo - slot no of the card SW_SHM_NOT_ATTACH stSimm - simm information SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_SIMM_ID_INVALID SW_SIMM_ID_INUSE SW_RemoveSimm Remove a simm from a MFDSP card. usNodeID - logical node ID SW_SUCCESS usSlotNo - slot no of the card SW_SHM_NOT_ATTACH usSimmID -- simm ID SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_SIMM_ID_INVALID SW_GetDSPResourceInfo Get the maximum DSP resource pusDSPResource - where to deposit the DSP SW_SUCCESS information. resource information SW_SHM_NOT_ATTACH SW_INPUT_ADDR_INVALID SW_GetDChannelID Get an ISDN D Channel ID. usSpanID - logical span ID SW_SUCCESS usChannelID -- channel ID SW_SHM_NOT_ATTACH pusNodeID -- return logical node ID SW_INPUT_ADDR_INVALID pusSlotNo -- return slot no SW_DCHANNEL_INVALID pusDChannelID -- D Channel ID SW_AssignDChannel Assign an ISDN D Channel. usNodeID - logical node ID SW_SUCCESS usSlotNo - slot no of the card SW_SHM_NOT_ATTACH stDChannel - D Channel info. SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_DCHANNEL_INUSE SW_TABLE_FULL SW_DeassignDChnnnel Remove an ISDN D Channel. usSpanID - logical span ID SW_SUCCESS usChannelID -- channel ID SW_SHM_NOT_ATTACH SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_DCHANNEL_INVALID SW_AddDChannel Add a facility to a ISDN channel. usSpanID - D Channel span ID SW_SUCCESS usChannelID - D Channel Channel ID SW_SHM_NOT_ATTACH usFacSpanID - logical span ID to be added to the D SW_NODE_ID_INVALID Channel SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_DCHANNEL_INVALID SW_TABLE_FULL SW_RemoveDChannelFacility Remove a facility from an ISDN D usFacSpanID -- span ID to be removed from the D SW_SUCCESS Channel. Channel SW_SHM_NOT_ATTACH SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_DCHANNEL_INVALID SW_FACILITY_INVALID SW_PrintCPUCard Print a CPU card info. File *fp, CPUCard stCPUCard SW_PrintLineCard Print a line card info. File *fp, LineCard stCard SW_PrintMFDSPCard Print MFDSP card info. File *fp, MFDSPCard stCard SW_PrintSS7Card Print SS7 card info. File *fp, SS7Card stCard SW_PrintEXNETCard Print EXNET card info. File *fp, EXNETCard stCard SW_PRINTISDNCard Print ISDN Card info. File *fp, ISDNCard st Card SW_PRINTOtherCard Print other type of card information. File *fp, OtherCard stCard SW_CreateConf Add a conference to conference table. stConfData -- conference info. SW_SUCCESS SW_SHM_NOT_ATTACH SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_TABLE_FULL SW_DeleteConf Delete a conference. usConfID -- conference ID SW_SUCCESS SW_SHM_NOT_ATTACH SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_CONF_ID_INVALID SW_ReserveConf Reserve a conference. stInput -- conference type and size in need SW_SUCCESS pstOutPut -- return conference info. SW_SHM_NOT_ATTACH SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_NO_CONF_AVAILABLE SW_ReleaseConf Release a previously reserved usConfID - conference ID SW_SUCCESS conference. SW_SHM_NOT_ATTACH SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_CONF_ID_INVALID SW_GetConfData Get conference data. usConfID -- conference ID SW_SUCCESS pstConfData -- return conference data SW_SHM_NOT_ATTACH SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_CONF_ID_INVALID SW_INPUT_ADDR_INVALID SW_SetConfData Change conference data. usConfID -- conference ID SW_SUCCESS stConfData-- conference data SW_SHM_NOT_ATTACH SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_CONF_ID_INVALID SW_PrintConfData Print conference data. fp -- output file pointer None stConfData -- conference data SW_GetConfCount Get total number of conferences in the pusCount - where to deposit number of conference SW_SUCCESS conference table. SW_SHM_NOT_ATTACH SW_INPUT_ADDR_INVALID SW_PrintConfTable Print conference table summary. fp -- output file pointer None SW_PrintConfEntry Print one conference entry. fp -- output file pointer SW_SUCCESS usConfID -- conference ID SW_SHM_NOT_ATTACH SW_CONF_ID_INVALID SW_PrintConfSearchTable Print conference search table content. fp -- output file pointer None SW_AssignLogicalSpan Assign logical span. usNodeID - logical node ID SW_SUCCESS usSlotNo -- slot no of the line card SW_SHM_NOT_ATTACH usPhySpanID - physical span ID on the line card SW_NODE_ID_INVALID usLogSpanID -- assigned logical span ID SW_SLOT_NO_INVALID SW_CARD_TYPE_INVALID SW_SPAN_ID_INVALID SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_DeassignLogSpan De-assign one logical span. usLogSpanID - logical span ID SW_SUCCESS SW_SHM_NOT_ATTACH SW_SPAN_ID_INVALID SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_DeassignCardLogSpan De-assign all the logical spans on one usNodeID -- logical node ID SW_SUCCESS Line card. usSlotNo - slot no of the card SW_NODE_ID_INVALID SW_SLOT_NO_INVALID SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_DeassignNodeLogSpan De-assign all the logical spans on one usNodeID -- logical node ID SW_SUCCESS node. SW_SHM_NOT_ATTACH SW_NODE_ID_INVALID SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_DeassignAllLogSpan De-assign all the logical spans. None SW_SUCCESS SW_SHM_NOT_ATTACH SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_SpanInService Bring one span in service (change usSpanID -- logical span ID SW_SUCCESS span state). SW_SHM_NOT_ATTACH SW_SPAN_ID_INVALID SW_SpanOutService Bring one span out of service. usSpanID - logical span ID SW_SUCCESS SW_SHM_NOT_ATTACH SW_SPAN_ID_INVALID SW_ChannelsInService Bring a range of channels in service. usStartSpanID -- starting logical span ID SW_SUCCESS usStartChannelID -- starting channel ID SW_SHM_NOT_ATTACH usEndSpanID -- ending logical span ID SW_SPAN_ID_INVALID usEndChannelID - ending logical channel ID SW_ChannelsOutService Bring a range of channels out of usStartSpanID -- starting logical span ID SW_SUCCESS service. usStartChannelID - starting channel ID SW_SHM_NOT_ATTACH usEndSpanID - ending logical span ID SW_SPAN_ID_INVALID usEndChannelID - ending logical channel ID SW_AddSS7CIC Assign SS7 CIC to channel. usSpanID - logical span ID SW_SUCCESS usChannelID - base channel ID SW_SHM_NOT_ATTACH ulDPC -- Destination Point Code SW_SPAN_ID_INVALID ulCIC -- base CIC SW_LOCK_TABLE_ERR usTotal -- total number of channels to be assigned SW_UNLOCK_TABLE_ERR Note: all channels should be on the same span for CIC assignment SW_RemoveSS7CIC De-assign SS7 CIC. usSpanID - logical span ID SW_SUCCESS usChannelID - channel ID SW_SHM_NOT_ATTACH usTotal -- total number of channels de-assign CIC SW_SPAN_ID_INVALID SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_GetSS7Channel Get channel information by SS7 DPC ulDPC -- Destination Point Code SW_SUCCESS and CIC. usCIC - Circuit Identification Code SW_SHM_NOT_ATTACH pusSpanID -- return logical span ID SW_KEY_INVALID pusChannelID - return channel ID SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_GetSpan Get a span structure. usSpanID - logical span ID SW_SUCCESS SW_SHM_NOT_ATTACH SW_SPAN_ID_INVALID SW_LOCK_REC_ERR SW_UNLOCK_REC_ERR SW_SetSpan Set a span structure. usSpanID - logical span ID SW_SUCCESS SW_SHM_NOT_ATTACH SW_SPAN_ID_INVALID SW_LOCK_REC_ERR SW_UNLOCK_REC_ERR SW_GetChannel Get a channel structure. usSpanID -- logical span ID SW_SUCCESS usChannelID - channel ID SW_SHM_NOT_ATTACH pstChannel where to deposit Channel info. SW_INPUT_ADDR_INVALID SW_SPAN_ID_INVALID SW_CHANNEL_ID_INVALID SW_LOCK_REC_ERR SW_UNLOCK_REC_ERR SW_SetChannel Set a channel structure. usSpanID -- logical span ID SW_SUCCESS usChannelID -- channel ID SW_SHM_NOT_ATTACH stChannel -- channel info SW_SPAN_ID_INVALID SW_CHANNEL_ID_INVALID SW_LOCK_REC_ERR SW_UNLOCK_REC_ERR SW_PrintSpanTable Print span table summary. fp -- output file pointer None SW_PrintSpanEntry Print one span info. fp -- output file pointer SW_SUCCESS SW_SHM_NOT_ATTACH SW_SPAN_ID_INVALID SW_AddTrunkGroup Add one trunk group. stTrunkGroup -- trunk group info. SW_SUCCESS SW_SHM_NOT_ATTACH SW_TABLE_FULL SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_RemoveTrunkGroup Remove a trunk group. puchTrunkGroupID -- trunk group ID SW_SUCCESS SW_SHM_NOT_ATTACH SW_TRUNK_GROUP_ID_INVALID SW_DEL_SEARCH_ENTRY_ERR SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_GetTrunkGroup Get trunk group info. puchTrunkGroupID - trunk group ID SW_SUCCESS pstTrunkGroup -- return trunk group structure SW_SHM_NOT_ATTACH SW_TRUNK_GROUP_ID_INVALID SW_INPUT_ADDR_INVALID SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_SetTrunkGroup Change trunk group info. puchTrunkGroupID -- trunk group ID SW_SUCCESS stTrunkGroup - trunk group information SW_SHM_NOT_ATTACH SW_TRUNK_GROUP_ID_INVALID SW_INPUT_ADDR_INVALID SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_EPR SW_GetTrunkGroupCount Get total number of trunk groups in *pusCount SW_SUCCESS trunk group table. SW_SHM_NOT_ATTACH SW_INPUT_ADDR_INVALID SW_AddChannelsToTrunkGroup Add a range of channels to one trunk puchTrunkGroupID -- trunk group ID SW_SUCCESS group. usStartSpanID - starting logical span ID SW_SHM_NOT_ATTACH usStartChannelID - starting channel ID SW_TRUNK_GROUP_ID_INVALID usEndSpanID - ending logical span ID SW_SPAN_ID_INVALID usEndChannelID - ending channel ID SW_INPUT_ADDR_INVALID Note: start → in ascending order SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_RemoveChannelsFromTrunkGroup De-assign a range of channels from usStartSpanID -- starting logical span ID SW_SUCCESS their trunk groups. usStartChannelID - starting channel ID SW_SHM_NOT_ATTACH usEndSpanID - ending logical span ID SW_SPAN_ID_INVALID usEndChannelID -- ending channel ID SW_INPUT_ADDR_INVALID Note: start → end in ascending order SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_ChannelSelect Select an available channel from a puchTrunkGroupID - trunk group ID SW_SUCCESS trunk group and reserve it. usSelectMode -- channel select mode, can be one SW_SHM_NOT_ATTACH of the following values: SW_TRUNK_GROUP_ID_INVALID SW_CHANNEL_SELECT_MOST_IDLE SW_INPUT_ADDR_INVALID SW_CHANNEL_SELECT_ASCENDING SW_LOCK_TABLE_ERR SW_CHANNEL_SELECT_DESCENDING SW_UNLOCK_TABLE_ERR pusSpanID -- return logical span ID pusChannelID -- return channel ID SW_ChannelRelease Release a channel. usSpanID -- logical span ID SW_SUCCESS usChannelID -- channel ID SW_SHM_NOT_ATTACH SW_SPAN_ID_INVALID SW_CHANNEL_ID_INVALID SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_PrintTrunkGroupTable Print trunk group table summary. fp -- output file pointer None SW_PrintTrunkGroupEntry Print one trunk group entry. fp -- output file pointer SW_SUCCESS puchTrunkGroupID -- trunk group ID SW_SHM_NOT_ATTACH SW_INPUT_ADDR_INVALID SW_TRUNK_GROUP_ID_INVALID SW_LOCK_TABLE_ERR SW_UNLOCK_TABLE_ERR SW_PrintTrunkGroupSearchTable Print trunk group search table. fp -- output file pointer None

TABLE 38 Switch Library Node Information Table Field Comments us Node ID Node 1 Node 2 . . . Node 3 Logical node identifier for the switch. 1Physical ID Node serial number. US Host Node ID Host node logical identifier S SWType Switch system type (LNX, CSN) US MaxSlot Maximum number of slots. sStatus Status of the node.

TABLE 39 Switch Library Card Information Table Field Comments usSlotNo stat number eCard Type card type Sserial Number Card Card . . . Card card serial number Serial Serial Serial No. 1 No. 2 No. 3 eCardStatus status of the card sConfigTag configure tag if any sCardRole primary, secondary etc. usMatchSlot matching front or rear slot

TABLE 40 Switch Controller Slot Table Field Slot 1 Slot 2 . . . Slot n Comments stCardInfo generic card info pvCard specific card info ulCardEntrySize card entry size chEntryUsed entry used flag

TABLE 41 Switch Library Node Table Type Field Node 1 Node 2 . . Node 3 Comments stNodeData node data stSlotMap slot map stLineCard line cards stMFDSPCard MFDSP cards stCPUCard CPU cards stSS7Card SS7 cards stISDNCard ISDN cards stEXNETCard EXNET cards stOtherCard other types of card chEntryUsed entry used flag

TABLE 42 Switch Library Span Map Table Field Comments usLogSpanID Span ID 1 Span ID 2 . . . Span ID 3 logical span ID chEntryUsed entry used flag

TABLE 43 Switch Library Line Card Table Line Line Line Field Card 1 Card 2 . . . Card n Comments stCardInfo generic card info usMaxSpan # of spans (4, 8) usMaxChannel # of channels on each span stSpanMap physical to logical map chEntryUsed entry used flag

TABLE 44 Switch Library CPU Card Table Field Comments stCardInfo generic card info chIPAddr Internet protocol address sConnectState Connect state 1 SocketID Socket identifier chEntryUsed entry used flag

TABLE 45 Switch Library DSP Table Field DSP1 DSP2 . . . DSPn Comments eFuncType function type of the DSP sStatus status of this DSP usMaxResource max resources of this type usCurrUsed current used resource chEntryUsed entry used flag

TABLE 46 Switch Library Simm Table Field Comments US Simm ID Simm Simm . . . Simm Single inline memory ID 1 ID 2 ID 3 module (SIMM) identifier eSimmType SIMM type sStatus status of this SIMM usNoDSP # of DSPs on this SIMM stDSP DSP structure chEntryUsed entry used flag

TABLE 47 Switch Library MSDSP Card Table Field Card 1 Card 2 . . . Card n Comments stCardInfo generic card info usNoSimm # of simms on the card stSimm simm card structure chEntryUsed entry used flag

TABLE 48 Switch Library Stack Table Field Comments usStack ID Stack Stack . . . Stack stack identifier ID 1 ID2 ID3 ulOPC OPC SS7ModVarEnum Message transfer part eMTPVariant SS7ModVarEnum Integrated Service Digital eISUPVariant Network (ISDN) User Part (ISUP) SS7ModVarEnum eL3P eL3PVariant chEntryUsed entry used flag

TABLE 49 Switch Library Linkset Table Field Comments usLinkset ID Linkset Linkset . . . Linkset Linkset identifier which ID 1 ID 2 ID n should be one byte ulAPC adjacent point code usStackID stack identifier chEntryUsed entry used flag

TABLE 50 Switch Library Link Table Field Comments us LinkID Link Link . . . Link Link identifier ID 1 ID 2 ID n usStackID Stack identifier usLinksetID Linkset identifier usSLC one byte (0x00-0x0F) Signaling Link Code usDataRate one byte (0x00-64 Kbps, 0x01-56 Kbps) usSpanID span ID (two bytes) usChannelID channel (one byte) chEntryUsed entry used flag

TABLE 51 Switch Library Destination Table Field Comments usDestID Dest ID 1 Dest ID 2 . . . Dest destination identifier ID 3 ulDPC destination point code chEntryUsed entry used flag

TABLE 52 Switch Library Route Table Field Comments US Route ID Route ID Route ID . . . Route ID Route identifier 1 2 n usStackID Stack identifier which is one byte one byte ulDPC destination point code usLinksetID Linkset identifier usDestID destination identifier sPriority priority of the route (byte) chEntryUsed entry used flag

TABLE 53 Switch Library SS7 Card Table SS7 SS7 SS7 Field Card 1 Card 2 . . . Card n Comments stCardInfo generic card info stStack stack type stLinkset linkset type stLink link type stDest destination type stRoute route type chEntryUsed entry used flag

TABLE 54 Switch Library EXNET Card Table EXNET EXNET EXNET Field Card 2 Card 2 . . . Card n Comments stCard Info Generic card information usRing ID Logic ring identifier chEntry Used entry used flag

TABLE 55 Switch Library Facility Table Field Comments usFacSpan ID Facility Facility . . . Facility facility span Span ID 1 Span ID 2 Span ID n identifier chEntryUsed entry used flag

TABLE 56 Switch Library Channel Table Field Comments usSpanID span identifier usChannelID Channel Channel . . . Channel channel identifier ID 1 ID 2 ID n sFeature FAS or NFAS sRole primary, or secondary, independent usRelatedChannel related channel chEntryUsed entry used flag

TABLE 57 Switch Library ISDN Card Table ISDN ISDN ISDN Field Card 1 Card 2 . . . Card n Comments stCardInfo generic card info usNoDChannel number of D channels stDChannel D channel type chEntryUsed entry used flag

TABLE 58 Switch Library Other Card Table Field Comments stCardInfo generic card info chEntryUsed entry used flag

TABLE 59 Switch Library Card Union Table Field Comments stCPUCard CPU card stLineCard Line Card stMFDSPCard MFDSP Card stSS7Card SS7 Card stISDNCard ISDN Card stOtherCard Other Card stEXNETCard EXNET Card 

1. A computer in a telecommunications network, comprising: a processor; and a resource management means for enabling said processor to provide standardized management of multiple resources including internal operational resources, external components, and applications processing data, wherein said resource management means comprises one or more resource managers, said resource managers being one of: a semaphore resource manager; a switch controller resource manager; an agent resource manager; a call data block resource manager; a service logic resource manager; or a switch resource resource manager; wherein each of said resource managers comprises: one or more resource manager application program interfaces that manage said internal operational resources, said external components, and said applications processing data; and one or more data storing means for enabling said processor to store data in table format related to said internal operational resources, said external components, and said applications processing data, said application interfaces manipulating the data to reflect the current resource state.
 2. The computer of claim 1, wherein said data within said data storing means comprises one of: switch controller data; call data block data; or service logic program data.
 3. The computer of claim 1, wherein said resource management means further comprises: a table manager resource manager; a queue logic manager resource manager; a system manager resource manager; and a shared memory manager resource manager.
 4. The computer of claim 2, wherein said data comprises one or more of: switch controller IPC data; switch controller CPU availability data; switch controller disk availability data; agent operational measurement count data, wherein said agent operational measurement count data is data collected for one or more agents controlled by a switch controller; a switch port operational measurement count data, wherein said switch port operational measurement count data collected for one or more switches controlled by said switch controller; control table data for control tables within said switch controller; or heartbeat data for heartbeating of routines within said switch controller.
 5. The computer of claim 2, wherein said data stored in said table format comprises: call identifying information; calling number; called number; call leg information; and billing time point information.
 6. A computer in a telecommunications network, comprising: a processor; and plurality of application program interface means for enabling said processor which is connected to a memory, to provide an interface between one or more resource requesters and data organized in a plurality of tables, each of said plurality of tables corresponding to one of a plurality of resources, each of said plurality of application program interface means comprising: sending means for sending a query; and managing means for managing data stored in said memory and organized in table format using said query; wherein said application program interface means provides system-wide interface with said data; wherein each of said plurality of application program interface means complies with a common standard for application programmer interfaces; wherein each of said plurality of application program interface means manipulating the data to reflect the current resource state.
 7. The computer of claim 6, wherein said data comprises one or more of: semaphore data; switch controller data; agent data; call data block data; service logic program data; or switch data.
 8. The computer of claim 6, wherein one of said application programmer interface means is one of: create table semaphore; initialize table semaphore; create semaphore; initialize semaphore; delete semaphore; attach semaphore; lock semaphore table; unlock semaphore table; lock semaphore table entry; unlock semaphore table entry; lock semaphore one entry; unlock semaphore one entry; recover table semaphore; get semaphore size; get table semaphore value; or print semaphore.
 9. The computer of claim 6, wherein one of said application programmer interface means is one of: create switch controller common library memory segment; delete switch controller common library memory segment; attach switch controller common library memory segment; and detach switch controller common library memory segment.
 10. The computer of claim 6, wherein one of said application programmer interface means is one of: set up an operational measurements IPC; update an operational measurements IPC; print an operational measurements IPC; get an operational measurements attribute; or set an operational measurements attribute.
 11. The computer of claim 6, wherein one of said application programmer interface means is one of: get time; create a heartbeat table; delete a heartbeat table; attach to a heartbeat table; detach from a heartbeat table; create a heartbeat entry; delete a heartbeat entry; get a heartbeat handle; request heartbeat; respond heartbeat; set heartbeat interval; get heartbeat attributes; or print heartbeat table.
 12. The computer of claim 6, wherein one of said application programmer interface means is one of: create agent segment; delete agent segment; attach agent segment; or detach agent segment.
 13. The computer of claim 6, wherein one of said application programmer interface means is one of: create agent entry; delete agent entry; update agent state; agent select; agent destination number to terminal identifier conversion; get agent data; set agent data; get agent attribute; set agent attribute; get agent handle; get agent counts; print agent table; print agent entry; or print agent search table.
 14. The computer of claim 6, wherein one of said application programmer interface means is one of: create group entry; delete group entry; get group handle; get group data; set group data; increase calls queued on group; decrease calls queued on group; get group count; print group table; print group entry; or print group search table.
 15. The computer of claim 6, wherein one of said application programmer interface means is one of: create assign entry; delete assign entry by keys; delete agent assign; delete group assign; get assign by keys; get assign count; get agent assign count; get group assign count; or print assign table.
 16. The computer of claim 6, wherein one of said application programmer interface means is one of: create call data block table; delete call data block table; attach call data block table; detach call data block table; create call data block entry; delete call data block entry; call data block search call identifier by port identifiers; get call data block data; set call data block data; print call data block data; return call data block attribute; set call data block attribute; get number call data block entries; print call data block table; or print call data block entry.
 17. The computer of claim 6, wherein one of said application programmer interface means is one of: create service logic program table; delete service logic program table; attach service logic program table; detach service logic program table; create service logic program entry; delete service logic program entry; get service logic program data; set service logic program data; print service logic program data; get service logic program attribute; set service logic program attribute; service logic program search call identifier by terminal identifier; get service logic program count; print service logic program table; or print service logic program entry. 